<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN" class="translated-ltr">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<title>第23章分区</title>
		<link rel="stylesheet" href="mvl.css" type="text/css">
		<meta name="generator" content="DocBook XSL Stylesheets + chunker.py v1.9.2">
		<link rel="start" href="index.html" title="{书名}">
		<link rel="up" href="" title="">
		<link rel="prev" href="mysql-cluster.html" title="第22章MySQL NDB Cluster 8.0">
		<link rel="next" href="stored-objects.html" title="Chapter&nbsp;24 Stored Objects">
		
		<link type="text/css" rel="stylesheet" charset="UTF-8" href="https://translate.googleapis.com/translate_static/css/translateelement.css">
	</head>

	<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
		<div class="navheader">
			<table width="100%" summary="Navigation header">
				<tbody>
					<tr>
						<th colspan="3" align="center">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第23章分区</font>
							</font>
						</th>
					</tr>
					<tr>
						<td width="20%" align="left"><a accesskey="p" href="mysql-cluster.html">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">上一页</font>
								</font>
							</a>&nbsp;</td>
						<th width="60%" align="center"></th>
						<td width="20%" align="right">&nbsp;<a accesskey="n" href="stored-objects.html">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">下一个</font>
								</font>
							</a></td>
					</tr>
				</tbody>
			</table>
			<hr>
		</div>
		<div class="chapter">
			<div class="titlepage">
				<div>
					<div>
						<h1 class="title"><a name="partitioning"></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第23章分区</font>
							</font>
						</h1>

					</div>

				</div>

			</div>
			<div class="toc">
				<p><b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">目录</font>
						</font>
					</b></p>
				<dl class="toc"><dt><span class="section"><a href="partitioning.html#partitioning-overview">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">23.1 MySQL中的分区概述</font>
								</font>
							</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-types">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">23.2分区类型</font>
								</font>
							</a></span></dt>
					<dd>
						<dl><dt><span class="section"><a href="partitioning.html#partitioning-range">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">23.2.1范围分区</font>
										</font>
									</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-list">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">23.2.2列表分区</font>
										</font>
									</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-columns">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">23.2.3列分区</font>
										</font>
									</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-hash">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">23.2.4 HASH分区</font>
										</font>
									</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-key">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">23.2.5密钥分区</font>
										</font>
									</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-subpartitions">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">23.2.6分区</font>
										</font>
									</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-handling-nulls">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">23.2.7 MySQL分区如何处理NULL</font>
										</font>
									</a></span></dt></dl>
					</dd><dt><span class="section"><a href="partitioning.html#partitioning-management">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">23.3分区管理</font>
								</font>
							</a></span></dt>
					<dd>
						<dl><dt><span class="section"><a href="partitioning.html#partitioning-management-range-list">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">23.3.1 RANGE和LIST分区的管理</font>
										</font>
									</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-management-hash-key">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">23.3.2 HASH和KEY分区的管理</font>
										</font>
									</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-management-exchange">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">23.3.3使用表格交换分区和子分区</font>
										</font>
									</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-maintenance">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">23.3.4分区的维护</font>
										</font>
									</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-info">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">23.3.5获取分区信息</font>
										</font>
									</a></span></dt></dl>
					</dd><dt><span class="section"><a href="partitioning.html#partitioning-pruning">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">23.4分区修剪</font>
								</font>
							</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-selection">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">23.5分区选择</font>
								</font>
							</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-limitations">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">23.6分区的限制和限制</font>
								</font>
							</a></span></dt>
					<dd>
						<dl><dt><span class="section"><a href="partitioning.html#partitioning-limitations-partitioning-keys-unique-keys">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">23.6.1对密钥，主密钥和唯一密钥进行分区</font>
										</font>
									</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-limitations-storage-engines">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">23.6.2与存储引擎相关的分区限制</font>
										</font>
									</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-limitations-functions">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">23.6.3与函数相关的分区限制</font>
										</font>
									</a></span></dt></dl>
					</dd>
				</dl>
			</div>
			<a class="indexterm" name="idm140091574469936"></a><a class="indexterm" name="idm140091574468864"></a><a class="indexterm"
			 name="idm140091574467792"></a><a class="indexterm" name="idm140091574466304"></a><a class="indexterm" name="idm140091574464816"></a>
			<p>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">
						本章讨论</font>
				</font><span class="firstterm">
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">用户定义的分区</font>
					</font>
				</span>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">。
					</font>
				</font>
			</p>
			<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">

				<div class="admon-title">
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							注意
						</font>
					</font>
				</div>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							表分区与窗口函数使用的分区不同。</font>
						<font style="vertical-align: inherit;">有关窗口函数的信息，请参见
						</font>
					</font><a class="xref" href="functions.html#window-functions" title="12.21窗口函数">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第12.21节“窗口函数”</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
			</div>
			<p>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">
						在MySQL 8.0，分区支持通过提供
					</font>
				</font><a class="link" href="innodb-storage-engine.html" title="第15章InnoDB存储引擎"><code class="literal">InnoDB</code></a>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">和
					</font>
				</font><a class="link" href="mysql-cluster.html" title="第22章MySQL NDB Cluster 8.0"><code class="literal">NDB</code></a>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">存储引擎。
					</font>
				</font>
			</p>
			<p>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">
						MySQL 8.0当前不支持使用除</font>
				</font><code class="literal">InnoDB</code>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">
						or </font>
					<font style="vertical-align: inherit;">之外的任何存储引擎对表进行分区</font>
				</font><code class="literal">NDB</code>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">，例如
					</font>
				</font><a class="link" href="storage-engines.html#myisam-storage-engine" title="16.2 MyISAM存储引擎"><code class="literal">MyISAM</code></a>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">。</font>
					<font style="vertical-align: inherit;">使用不提供本机分区支持的存储引擎创建分区表的尝试因</font>
				</font><span class="errorcode">
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">ER_CHECK_NOT_IMPLEMENTED而</font>
					</font>
				</span>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">失败
					</font>
					<font style="vertical-align: inherit;">。
					</font>
				</font>
			</p>
			<p>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">
						Oracle提供的MySQL 8.0的社区二进制文件包括由提供分区支持</font>
				</font><code class="literal">InnoDB</code>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">和
					</font>
				</font><code class="literal">NDB</code>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">存储引擎。</font>
					<font style="vertical-align: inherit;">有关MySQL Enterprise Edition二进制文件中提供的分区支持的信息，请参阅
					</font>
				</font><a class="xref" href="mysql-enterprise.html" title="第30章MySQL企业版">
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">第30章，</font>
					</font><i>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">MySQL Enterprise Edition</font>
						</font>
					</i>
				</a>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">。
					</font>
				</font>
			</p>
			<p>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">
						如果从源代码编译MySQL 8.0，则使用</font>
				</font><code class="literal">InnoDB</code>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">支持</font>
					<font style="vertical-align: inherit;">配置构建</font>
					<font style="vertical-align: inherit;">就足以生成具有</font>
				</font><code class="literal">InnoDB</code>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">表的</font>
					<font style="vertical-align: inherit;">分区支持的二进制文件
					</font>
					<font style="vertical-align: inherit;">。</font>
					<font style="vertical-align: inherit;">有关更多信息，请参见
					</font>
				</font><a class="xref" href="installing.html#source-installation" title="2.9从源安装MySQL">
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">第2.9节“从源安装MySQL”</font>
					</font>
				</a>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">。
					</font>
				</font>
			</p>
			<p>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">
						不需要做任何其他事情来启用分区支持
					</font>
				</font><code class="literal">InnoDB</code>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">（例如，文件中不需要特殊条目</font>
				</font><code class="filename">my.cnf</code>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">）。
					</font>
				</font>
			</p>
			<p>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">
						无法禁用</font>
				</font><code class="literal">InnoDB</code>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">存储引擎的</font>
					<font style="vertical-align: inherit;">分区支持
					</font>
					<font style="vertical-align: inherit;">。
					</font>
				</font>
			</p>
			<p>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">
						有关</font>
					<font style="vertical-align: inherit;">分区和分区概念的介绍，</font>
					<font style="vertical-align: inherit;">请参见</font>
				</font><a class="xref" href="partitioning.html#partitioning-overview" title="23.1 MySQL中的分区概述">
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">第23.1节“MySQL中的分区概述”</font>
					</font>
				</a>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">。
					</font>
				</font>
			</p>
			<p>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">
						支持几种类型的分区，以及子分区; </font>
					<font style="vertical-align: inherit;">请参见</font>
				</font><a class="xref" href="partitioning.html#partitioning-types" title="23.2分区类型">
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">第23.2节“分区类型”</font>
					</font>
				</a>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">和
					</font>
				</font><a class="xref" href="partitioning.html#partitioning-subpartitions" title="23.2.6分区">
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">第23.2.6节</font>
					</font>
				</a>
				<font style="vertical-align: inherit;"><a class="xref" href="partitioning.html#partitioning-types" title="23.2&nbsp;Partitioning Types">
						<font style="vertical-align: inherit;">“子分区</font>
					</a><a class="xref" href="partitioning.html#partitioning-subpartitions" title="23.2.6&nbsp;Subpartitioning">
						<font style="vertical-align: inherit;">”</font>
					</a>
					<font style="vertical-align: inherit;">。
					</font>
				</font>
			</p>
			<p>
				<a class="xref" href="partitioning.html#partitioning-management" title="23.3分区管理">
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">第23.3节“分区管理”</font>
					</font>
				</a>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">包括在现有分区表中添加，删除和更改分区的方法。
					</font>
				</font>
			</p>
			<p>
				<a class="xref" href="partitioning.html#partitioning-maintenance" title="23.3.4分区的维护">
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">第23.3.4节“分区维护”</font>
					</font>
				</a>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">讨论了与分区表一起使用的表维护命令。
					</font>
				</font>
			</p>
			<p>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">数据库中</font>
					<font style="vertical-align: inherit;">
						的</font>
				</font><a class="link" href="information-schema.html#partitions-table" title="25.17 INFORMATION_SCHEMA PARTITIONS表"><code
					 class="literal">PARTITIONS</code></a>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">表
					</font>
				</font><code class="literal">INFORMATION_SCHEMA</code>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">提供有关分区和分区表的信息。</font>
					<font style="vertical-align: inherit;">有关</font>
					<font style="vertical-align: inherit;">更多信息，</font>
					<font style="vertical-align: inherit;">请参见
					</font>
				</font><a class="xref" href="information-schema.html#partitions-table" title="25.17 INFORMATION_SCHEMA PARTITIONS表">
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">第25.17节“INFORMATION_SCHEMA PARTITIONS表”</font>
					</font>
				</a>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">。</font>
					<font style="vertical-align: inherit;">有关此表的查询的一些示例，请参见
					</font>
				</font><a class="xref" href="partitioning.html#partitioning-handling-nulls" title="23.2.7 MySQL分区如何处理NULL">
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">第23.2.7节“MySQL分区如何处理NULL”</font>
					</font>
				</a>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">。
					</font>
				</font>
			</p>
			<p>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">
						有关MySQL 8.0中分区的已知问题，请参见
					</font>
				</font><a class="xref" href="partitioning.html#partitioning-limitations" title="23.6分区的限制和限制">
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">第23.6节“分区的限制和限制”</font>
					</font>
				</a>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">。
					</font>
				</font>
			</p>
			<p>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">
						在使用分区表时，您还可以找到以下资源。
					</font>
				</font>
			</p><a class="indexterm" name="idm140091574433744"></a>
			<p><b>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">其他资源。&nbsp;</font>
					</font>
				</b>
				<font style="vertical-align: inherit;">
					<font style="vertical-align: inherit;">
						有关MySQL中用户定义分区的其他信息来源包括：
					</font>
				</font>
			</p>
			<div class="itemizedlist">
				<ul class="itemizedlist" style="list-style-type: disc; ">
					<li class="listitem">
						<p>
							<a class="ulink" href="https://forums.mysql.com/list.php?106" target="_top">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">MySQL分区论坛</font>
								</font>
							</a>
						</p>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									对于那些对MySQL Partitioning技术感兴趣或正在尝试的人来说，这是一个官方讨论论坛。</font>
								<font style="vertical-align: inherit;">它包含来自MySQL开发人员和其他人的公告和更新。</font>
								<font style="vertical-align: inherit;">它由分区开发和文档团队的成员监控。
								</font>
							</font>
						</p>
					</li>
					<li class="listitem">
						<p>
							<a class="ulink" href="http://mikaelronstrom.blogspot.com/" target="_top">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">MikaelRonström的博客</font>
								</font>
							</a>
						</p>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									MySQL Partitioning Architect和首席开发人员MikaelRonström经常在这里发表有关他使用MySQL Partitioning和NDB Cluster的文章。
								</font>
							</font>
						</p>
					</li>
					<li class="listitem">
						<p>
							<a class="ulink" href="http://www.planetmysql.org/" target="_top">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">PlanetMySQL</font>
								</font>
							</a>
						</p>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									一个MySQL新闻网站，其中包含与MySQL相关的博客，任何人都应该对使用我的MySQL感兴趣。</font>
								<font style="vertical-align: inherit;">我们建议您在此处查看使用MySQL Partitioning的人员保存的博客链接，或者将自己的博客添加到所涵盖的博客中。
								</font>
							</font>
						</p>
					</li>
				</ul>
			</div>
			<div class="section">
				<div class="titlepage">
					<div>
						<div>
							<h2 class="title" style="clear: both"><a name="partitioning-overview"></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">23.1 MySQL中的分区概述</font>
								</font>
							</h2>

						</div>

					</div>

				</div>
				<a class="indexterm" name="idm140091574422848"></a>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							本节提供了MySQL 8.0中分区的概念性概述。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							有关分区限制和功能限制的信息，请参见</font>
					</font><a class="xref" href="partitioning.html#partitioning-limitations" title="23.6分区的限制和限制">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第23.6节“分区的限制和限制”</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							SQL标准没有提供有关数据存储的物理方面的指导。</font>
						<font style="vertical-align: inherit;">SQL语言本身旨在独立于与其一起工作的模式，表，行或列的任何数据结构或媒体。</font>
						<font style="vertical-align: inherit;">尽管如此，大多数高级数据库管理系统已经发展出一些方法来确定用于存储文件系统，硬件甚至两者的特定数据的物理位置。</font>
						<font style="vertical-align: inherit;">在MySQL中，
						</font>
					</font><code class="literal">InnoDB</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">存储引擎长期以来一直支持表空间的概念（参见</font>
					</font><a class="xref" href="innodb-storage-engine.html#innodb-tablespace" title="15.6.3表空间">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第15.6.3节“表空间”）</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">），MySQL服务器，甚至在引入分区之前，可以配置为使用不同的物理目录来存储不同的数据库（参见
						</font>
					</font><a class="xref" href="optimization.html#symbolic-links" title="8.12.2使用符号链接">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第8.12.2节“使用符号链接”</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，以解释如何完成此操作）。
						</font>
					</font>
				</p>
				<p>
					<span class="firstterm">
						<font style="vertical-align: inherit;"></font>
					</span>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">通过使您能够根据您可以根据需要设置的规则在文件系统中分发单个表的各个部分，</font><span class="firstterm">
							<font style="vertical-align: inherit;">分区</font>
						</span>
						<font style="vertical-align: inherit;">将这一概念更进一步。</font>
						<font style="vertical-align: inherit;">实际上，表的不同部分作为单独的表存储在不同的位置。</font>
						<font style="vertical-align: inherit;">用于完成数据划分的用户选择规则称为</font>
					</font><span class="firstterm">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区功能</font>
						</font>
					</span>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">在MySQL中，它可以是模数，与一组范围或值列表的简单匹配，内部散列函数或线性散列函数。</font>
						<font style="vertical-align: inherit;">根据用户指定的分区类型选择该函数，并将用户提供的表达式的值作为其参数。</font>
						<font style="vertical-align: inherit;">此表达式可以是列值，作用于一个或多个列值的函数，或一组一个或多个列值，具体取决于所使用的分区类型。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							在</font>
						<font style="vertical-align: inherit;">，和[ </font>
						<font style="vertical-align: inherit;">] </font>
						<font style="vertical-align: inherit;">
							分区</font>
						<font style="vertical-align: inherit;">的情况下</font>
					</font><code class="literal">RANGE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，</font>
						<font style="vertical-align: inherit;">分区列的值被传递给分区函数，该分区函数返回一个整数值，该值表示应该存储该特定记录的分区的编号。</font>
						<font style="vertical-align: inherit;">此函数必须是非常量且非随机的。</font>
						<font style="vertical-align: inherit;">它可能不包含任何查询，但可以使用在MySQL中有效的SQL表达式，只要该表达式返回一个</font>
						<font style="vertical-align: inherit;">或整数
						</font>
						<font style="vertical-align: inherit;">，以便
						</font>
					</font><code class="literal">LIST</code>
					<font style="vertical-align: inherit;"></font><code class="literal">LINEAR</code>
					<font style="vertical-align: inherit;"></font><code class="literal">HASH</code>
					<font style="vertical-align: inherit;"></font><code class="literal">NULL</code>
					<font style="vertical-align: inherit;"></font><em class="replaceable"><code>intval</code></em>
					<font style="vertical-align: inherit;"></font>
				</p>
				<pre data-lang="simple" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">-MAXVALUE &lt;= </font></font><em class="replaceable"><code>intval</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">&lt;= MAXVALUE
</font></font></pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							（</font>
					</font><code class="literal">MAXVALUE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">用于表示所讨论的整数类型的最小上限。
						</font>
					</font><code class="literal">-MAXVALUE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">表示最大下限。）
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							对于[ </font>
					</font><code class="literal">LINEAR</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">] </font>
					</font><code class="literal">KEY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，
						</font>
					</font><code class="literal">RANGE COLUMNS</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">和</font>
					</font><code class="literal">LIST
						COLUMNS</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">分区，分区表达式由一列或多列组成。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							对于[ </font>
					</font><code class="literal">LINEAR</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">] </font>
					</font><code class="literal">KEY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							分区，分区功能由MySQL提供。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							有关允许的分区列类型和分区函数的更多信息，请参见</font>
					</font><a class="xref" href="partitioning.html#partitioning-types" title="23.2分区类型">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第23.2节“分区类型”</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，以及</font>
					</font><a class="xref" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第13.1.20节“CREATE TABLE语法”</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，它提供了分区语法描述和其他示例。</font>
						<font style="vertical-align: inherit;">有关分区函数限制的信息，请参见
						</font>
					</font><a class="xref" href="partitioning.html#partitioning-limitations-functions" title="23.6.3与函数相关的分区限制">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第23.6.3节“分区与函数相关的限制”</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							这称为</font>
					</font><span class="firstterm">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">水平分区</font>
						</font>
					</span>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;"> - 也就是说，表的不同行可以分配给不同的物理分区。</font>
						<font style="vertical-align: inherit;">MySQL 8.0不支持
						</font>
					</font><span class="firstterm">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">垂直分区</font>
						</font>
					</span>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，其中表的不同列分配给不同的物理分区。</font>
						<font style="vertical-align: inherit;">目前还没有计划将垂直分区引入MySQL。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							要创建分区表，必须使用支持它们的存储引擎。</font>
						<font style="vertical-align: inherit;">在MySQL 8.0中，同一分区表的所有分区必须使用相同的存储引擎。</font>
						<font style="vertical-align: inherit;">但是，没有什么可以阻止您在同一个MySQL服务器上甚至在同一个数据库中为不同的分区表使用不同的存储引擎。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							在MySQL 8.0中，唯一支持分区的存储引擎是</font>
					</font><code class="literal">InnoDB</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">和
						</font>
					</font><a class="link" href="mysql-cluster.html" title="第22章MySQL NDB Cluster 8.0"><code class="literal">NDB</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">分区不能用于不支持它的存储引擎; </font>
						<font style="vertical-align: inherit;">这些包括
						</font>
					</font><code class="literal">MyISAM</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，</font>
					</font><code class="literal">MERGE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，
						</font>
					</font><code class="literal">CSV</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，和</font>
					</font><code class="literal">FEDERATED</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">存储引擎。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">使用此存储引擎的表不支持对其进行</font>
						<font style="vertical-align: inherit;">
							分区</font>
					</font><code class="literal">KEY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或</font>
					</font><code class="literal">LINEAR
						KEY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">可能进行</font>
						<font style="vertical-align: inherit;">分区</font>
					</font><a class="link" href="mysql-cluster.html" title="第22章MySQL NDB Cluster 8.0"><code class="literal">NDB</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，但不支持其他类型的用户定义分区。</font>
						<font style="vertical-align: inherit;">此外，</font>
					</font><a class="link" href="mysql-cluster.html" title="第22章MySQL NDB Cluster 8.0"><code class="literal">NDB</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">使用用户定义分区</font>
						<font style="vertical-align: inherit;">的
						</font>
						<font style="vertical-align: inherit;">表必须具有显式主键，并且表的分区表达式中引用的任何列都必须是主键的一部分。</font>
						<font style="vertical-align: inherit;">但是，如果在</font>
						<font style="vertical-align: inherit;">用于创建或修改用户分区</font>
						<font style="vertical-align: inherit;">表</font>
						<font style="vertical-align: inherit;">的</font>
						<font style="vertical-align: inherit;">or
						</font>
						<font style="vertical-align: inherit;">语句</font>
						<font style="vertical-align: inherit;">的</font>
					</font><code class="literal">PARTITION BY KEY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">or </font>
					</font><code class="literal">PARTITION BY
						LINEAR KEY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">子句中</font>
						<font style="vertical-align: inherit;">未列出任何列
						</font>
						<font style="vertical-align: inherit;">，则表不需要具有显式主键。</font>
						<font style="vertical-align: inherit;">有关更多信息，请参见
						</font><a class="xref" href="mysql-cluster.html#mysql-cluster-limitations-syntax" title="22.1.7.1&nbsp;Noncompliance with SQL Syntax in NDB Cluster">
							<font style="vertical-align: inherit;">第22.1.7.1节“NDB群集中不符合SQL语法”</font>
						</a>
						<font style="vertical-align: inherit;">。
						</font>
					</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
							TABLE</code></a>
					<font style="vertical-align: inherit;"></font><a class="link" href="sql-syntax.html#alter-table-partition-operations"
					 title="13.1.9.1 ALTER TABLE分区操作"><code class="literal">ALTER
							TABLE</code></a>
					<font style="vertical-align: inherit;"></font><a class="link" href="mysql-cluster.html" title="第22章MySQL NDB Cluster 8.0"><code
						 class="literal">NDB</code></a>
					<font style="vertical-align: inherit;"></font><a class="xref" href="mysql-cluster.html#mysql-cluster-limitations-syntax"
					 title="22.1.7.1 NDB群集中不符合SQL语法">
						<font style="vertical-align: inherit;"></font>
					</a>
					<font style="vertical-align: inherit;"></font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							创建分区表时，默认存储引擎的使用方式与创建任何其他表时一样; </font>
						<font style="vertical-align: inherit;">要覆盖此行为，</font>
					</font><code class="literal">[STORAGE]
						ENGINE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">只需像</font>
						<font style="vertical-align: inherit;">使用</font>
						<font style="vertical-align: inherit;">未分区的表一样</font>
						<font style="vertical-align: inherit;">使用该</font>
						<font style="vertical-align: inherit;">选项。</font>
						<font style="vertical-align: inherit;">目标存储引擎必须提供本机分区支持，否则语句将失败。</font>
						<font style="vertical-align: inherit;">您应该记住，</font>
						<font style="vertical-align: inherit;">在</font>
						<font style="vertical-align: inherit;">语句</font>
						<font style="vertical-align: inherit;">中使用任何分区选项</font><span class="emphasis"><em>
								<font style="vertical-align: inherit;">之前</font>
							</em></span>
					</font><code class="literal">[STORAGE] ENGINE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，需要列出（和其他表选项）</font>
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">此示例显示如何创建一个通过散列分区为6个分区并使用</font>
						<font style="vertical-align: inherit;">存储引擎的表（无论其值如何</font>
						<font style="vertical-align: inherit;">）：
						</font>
					</font><span class="emphasis"><em>
							<font style="vertical-align: inherit;"></font>
						</em></span>
					<font style="vertical-align: inherit;"></font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code
						 class="literal">CREATE
							TABLE</code></a>
					<font style="vertical-align: inherit;"></font><code class="literal">InnoDB</code>
					<font style="vertical-align: inherit;"></font><a class="link" href="server-administration.html#sysvar_default_storage_engine"><code
						 class="literal">default_storage_engine</code></a>
					<font style="vertical-align: inherit;"></font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE ti（id INT，amount DECIMAL（7,2），tr_date DATE）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    ENGINE = INNODB</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    哈希分区（月（tr_date））</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分数6;</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							每个</font>
					</font><code class="literal">PARTITION</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">子句都可以包含一个
						</font>
					</font><code class="literal">[STORAGE] ENGINE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">选项，但在MySQL 8.0中这没有任何效果。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							除非另有说明，否则本讨论中的其余示例均假定
						</font>
					</font><a class="link" href="server-administration.html#sysvar_default_storage_engine"><code class="literal">default_storage_engine</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">为
						</font>
					</font><code class="literal">InnoDB</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<div class="important" style="margin-left: 0.5in; margin-right: 0.5in;">

					<div class="admon-title">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								重要
							</font>
						</font>
					</div>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								分区适用于表的所有数据和索引; </font>
							<font style="vertical-align: inherit;">您不能只分区数据而不分区索引，反之亦然，也不能只分区表的一部分。
							</font>
						</font>
					</p>
				</div>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							可以使用</font>
						<font style="vertical-align: inherit;">用于创建分区表</font>
						<font style="vertical-align: inherit;">的</font>
						<font style="vertical-align: inherit;">语句</font>
						<font style="vertical-align: inherit;">的</font>
						<font style="vertical-align: inherit;">子句
						</font>
					</font><code class="literal">DATA DIRECTORY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">和
						</font>
					</font><code class="literal">INDEX DIRECTORY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">选项
						</font>
						<font style="vertical-align: inherit;">将每个分区的数据和索引分配给特定目录</font>
						<font style="vertical-align: inherit;">。
						</font>
					</font><code class="literal">PARTITION</code>
					<font style="vertical-align: inherit;"></font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code
						 class="literal">CREATE TABLE</code></a>
					<font style="vertical-align: inherit;"></font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">表的</font>
					</font><code class="literal">DATA DIRECTORY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">各个分区和子分区</font>
						<font style="vertical-align: inherit;">
							仅</font>
						<font style="vertical-align: inherit;">支持</font>
						<font style="vertical-align: inherit;">该</font>
						<font style="vertical-align: inherit;">选项
						</font>
					</font><code class="literal">InnoDB</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p><a class="indexterm" name="idm140091574359408"></a><a class="indexterm" name="idm140091574357920"></a>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							表的分区表达式中使用的所有列必须是表可能具有的每个唯一键的一部分，包括任何主键。</font>
						<font style="vertical-align: inherit;">这意味着无法对以下SQL语句创建的此类表进行分区：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE tnp（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NULL AUTO_INCREMENT，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    ref BIGINT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    name VARCHAR（255），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PRIMARY KEY pk（id），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    UNIQUE KEY uk（姓名）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							由于键</font>
					</font><code class="literal">pk</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">并</font>
					</font><code class="literal">uk</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							没有共同的列，因此没有可用于分区表达式的列。</font>
						<font style="vertical-align: inherit;">在这种情况下可能的解决方法包括将</font>
					</font><code class="literal">name</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">列</font>
						<font style="vertical-align: inherit;">添加</font>
						<font style="vertical-align: inherit;">到表的主键，添加</font>
					</font><code class="literal">id</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">列</font>
					</font><code class="literal">uk</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，或者只是完全删除唯一键。</font>
						<font style="vertical-align: inherit;">有关</font>
						<font style="vertical-align: inherit;">更多信息</font>
					</font><a class="xref" href="partitioning.html#partitioning-limitations-partitioning-keys-unique-keys" title="23.6.1对密钥，主密钥和唯一密钥进行分区">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">请参见
						</font><a class="xref" href="partitioning.html#partitioning-limitations-partitioning-keys-unique-keys" title="23.6.1&nbsp;Partitioning Keys, Primary Keys, and Unique Keys">
							<font style="vertical-align: inherit;">第23.6.1节“对键，主键和唯一键进行分区”</font>
						</a>
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							另外，</font>
					</font><code class="literal">MAX_ROWS</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">和
						</font>
					</font><code class="literal">MIN_ROWS</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">可被用于确定行，分别的最大和最小数字，可以被存储在每个分区中。</font>
						<font style="vertical-align: inherit;">有关</font>
						<font style="vertical-align: inherit;">这些选项的更多信息</font>
					</font><a class="xref" href="partitioning.html#partitioning-management" title="23.3分区管理">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">请参见</font><a class="xref" href="partitioning.html#partitioning-management"
						 title="23.3&nbsp;Partition Management">
							<font style="vertical-align: inherit;">第23.3节“分区管理”</font>
						</a>
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p><a class="indexterm" name="idm140091574347040"></a>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							该</font>
					</font><code class="literal">MAX_ROWS</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">选项对于创建具有额外分区的NDB Cluster表也很有用，因此可以更好地存储哈希索引。</font>
						<font style="vertical-align: inherit;">有关详细信息，请参阅</font>
					</font><a class="link" href="mysql-cluster.html#ndbparam-ndbd-datamemory"><code class="literal">DataMemory</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">数据节点配置参数</font>
						<font style="vertical-align: inherit;">的文档
						</font>
						<font style="vertical-align: inherit;">以及
						</font>
					</font><a class="xref" href="mysql-cluster.html#mysql-cluster-nodes-groups" title="22.1.2 NDB群集节点，节点组，副本和分区">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第22.1.2节“NDB群集节点，节点组，副本和分区”</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p><a class="indexterm" name="idm140091574342256"></a>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							此处列出了分区的一些优点：
						</font>
					</font>
				</p>
				<div class="itemizedlist">
					<ul class="itemizedlist" style="list-style-type: disc; ">
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										通过分区，可以在一个表中存储比在单个磁盘或文件系统分区上保存的数据更多的数据。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										通过删除仅包含该数据的分区（或多个分区），通常可以轻松地从分区表中删除失去其实用性的数据。</font>
									<font style="vertical-align: inherit;">相反，在某些情况下，通过添加一个或多个新分区来特别存储该数据，可以极大地促进添加新数据的过程。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										由于满足给定</font>
								</font><code class="literal">WHERE</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">子句的数据只能存储在一个或多个分区上，因此</font>
									<font style="vertical-align: inherit;">可以大大优化某些查询</font>
									<font style="vertical-align: inherit;">，这会自动从搜索中排除任何剩余的分区。</font>
									<font style="vertical-align: inherit;">由于在创建分区表后可以更改分区，因此可以重新组织数据以增强在首次设置分区方案时可能不常使用的频繁查询。</font>
									<font style="vertical-align: inherit;">这种排除不匹配分区（以及它们包含的任何行）的能力通常称为
									</font>
								</font><span class="firstterm">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">分区修剪</font>
									</font>
								</span>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。</font>
									<font style="vertical-align: inherit;">有关更多信息，请参见</font>
								</font><a class="xref" href="partitioning.html#partitioning-pruning" title="23.4分区修剪">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第23.4节“分区修剪”</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										此外，MySQL支持查询的显式分区选择。</font>
									<font style="vertical-align: inherit;">例如，
									</font>
								</font><a class="link" href="sql-syntax.html#select" title="13.2.10 SELECT语法"><code class="literal">SELECT *
										FROM t
										PARTITION (p0,p1) WHERE c &lt; 5</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">在分区仅选择那些行</font>
								</font><code class="literal">p0</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">和
									</font>
								</font><code class="literal">p1</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">该匹配</font>
								</font><code class="literal">WHERE</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										条件。</font>
									<font style="vertical-align: inherit;">在这种情况下，MySQL不会检查表的任何其他分区</font>
								</font><code class="literal">t</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">; </font>
									<font style="vertical-align: inherit;">当您已经知道要检查哪个或哪些分区时，这可以大大加快查询速度。</font>
									<font style="vertical-align: inherit;">选择分区还支持数据修改语句
									</font>
								</font><a class="link" href="sql-syntax.html#delete" title="13.2.2 DELETE语法"><code class="literal">DELETE</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，
									</font>
								</font><a class="link" href="sql-syntax.html#insert" title="13.2.6 INSERT语法"><code class="literal">INSERT</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，
									</font>
								</font><a class="link" href="sql-syntax.html#replace" title="13.2.9 REPLACE语法"><code class="literal">REPLACE</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，
									</font>
								</font><a class="link" href="sql-syntax.html#update" title="13.2.12 UPDATE语法"><code class="literal">UPDATE</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，和
									</font>
								</font><a class="link" href="sql-syntax.html#load-data" title="13.2.7 LOAD DATA语法"><code class="literal">LOAD
										DATA</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，
									</font>
								</font><a class="link" href="sql-syntax.html#load-xml" title="13.2.8 LOAD XML语法"><code class="literal">LOAD XML</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。</font>
									<font style="vertical-align: inherit;">有关更多信息和示例，请参阅这些语句的说明。
									</font>
								</font>
							</p>
						</li>
					</ul>
				</div>

			</div>
			<div class="section">
				<div class="titlepage">
					<div>
						<div>
							<h2 class="title" style="clear: both"><a name="partitioning-types"></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">23.2分区类型</font>
								</font>
							</h2>

						</div>

					</div>

				</div>
				<div class="toc">
					<dl class="toc"><dt><span class="section"><a href="partitioning.html#partitioning-range">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.2.1范围分区</font>
									</font>
								</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-list">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.2.2列表分区</font>
									</font>
								</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-columns">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.2.3列分区</font>
									</font>
								</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-hash">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.2.4 HASH分区</font>
									</font>
								</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-key">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.2.5密钥分区</font>
									</font>
								</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-subpartitions">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.2.6分区</font>
									</font>
								</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-handling-nulls">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.2.7 MySQL分区如何处理NULL</font>
									</font>
								</a></span></dt></dl>
				</div>
				<a class="indexterm" name="idm140091574320240"></a>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							本节讨论MySQL 8.0中可用的分区类型。</font>
						<font style="vertical-align: inherit;">这些包括此处列出的类型：
						</font>
					</font>
				</p>
				<div class="itemizedlist">
					<ul class="itemizedlist" style="list-style-type: disc; ">
						<li class="listitem">
							<p><b>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">RANGE分区。&nbsp;</font>
									</font>
								</b>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										这种类型的分区基于落在给定范围内的列值将行分配给分区。</font>
									<font style="vertical-align: inherit;">请参见
									</font>
								</font><a class="xref" href="partitioning.html#partitioning-range" title="23.2.1范围分区">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第23.2.1节“范围分区”</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。</font>
									<font style="vertical-align: inherit;">有关此类型扩展的信息</font>
								</font><code class="literal">RANGE COLUMNS</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，请参见</font>
								</font><a class="xref" href="partitioning.html#partitioning-columns-range" title="23.2.3.1 RANGE COLUMNS分区">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第23.2.3.1节“RANGE COLUMNS分区”</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p><b>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">列表分区。&nbsp;</font>
									</font>
								</b>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										与分区相似</font>
								</font><code class="literal">RANGE</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，除了基于匹配一组离散值之一的列选择分区。</font>
									<font style="vertical-align: inherit;">请参见
									</font>
								</font><a class="xref" href="partitioning.html#partitioning-list" title="23.2.2列表分区">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第23.2.2节“列表分区”</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。</font>
									<font style="vertical-align: inherit;">有关此类型扩展的信息</font>
								</font><code class="literal">LIST COLUMNS</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，请参见</font>
								</font><a class="xref" href="partitioning.html#partitioning-columns-list" title="23.2.3.2列表列分区">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第23.2.3.2节“列表列分区”</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p><b>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">HASH分区。&nbsp;</font>
									</font>
								</b>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										使用这种类型的分区，将根据用户定义的表达式返回的值选择分区，该表达式对要插入表中的行中的列值进行操作。</font>
									<font style="vertical-align: inherit;">该函数可以包含在MySQL中有效的任何表达式，该表达式产生非负整数值。</font>
								</font><code class="literal">LINEAR HASH</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">也可以使用</font>
									<font style="vertical-align: inherit;">此类型的扩展名</font>
									<font style="vertical-align: inherit;">。</font>
									<font style="vertical-align: inherit;">请参见</font>
								</font><a class="xref" href="partitioning.html#partitioning-hash" title="23.2.4 HASH分区">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第23.2.4节“HASH分区”</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p><b>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">KEY分区。&nbsp;</font>
									</font>
								</b>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										这种类型的分区类似于分区
									</font>
								</font><code class="literal">HASH</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，除了只提供一个或多个要评估的列，MySQL服务器提供自己的散列函数。</font>
									<font style="vertical-align: inherit;">这些列可以包含非整数值，因为MySQL提供的散列函数可以保证整数结果，而不管列数据类型如何。</font>
								</font><code class="literal">LINEAR KEY</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">也可以使用</font>
									<font style="vertical-align: inherit;">此类型的扩展名
									</font>
									<font style="vertical-align: inherit;">。</font>
									<font style="vertical-align: inherit;">请参见
									</font>
								</font><a class="xref" href="partitioning.html#partitioning-key" title="23.2.5密钥分区">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第23.2.5节“KEY分区”</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
					</ul>
				</div>
				<a class="indexterm" name="idm140091574301440"></a><a class="indexterm" name="idm140091574299952"></a>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							数据库分区的一个非常常见的用途是按日期隔离数据。</font>
						<font style="vertical-align: inherit;">一些数据库系统支持显式日期分区，MySQL在8.0中没有实现。</font>
						<font style="vertical-align: inherit;">但是，不能在MySQL中很难创建基于分区方案
						</font>
					</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，
						</font>
					</font><a class="link" href="data-types.html#time" title="11.3.2 TIME类型"><code class="literal">TIME</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或
						</font>
					</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATETIME</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">列，或基于表达式利用这样的列。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							当由分区</font>
					</font><code class="literal">KEY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或</font>
					</font><code class="literal">LINEAR
						KEY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，可以使用一个</font>
					</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，
						</font>
					</font><a class="link" href="data-types.html#time" title="11.3.2 TIME类型"><code class="literal">TIME</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或
						</font>
					</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATETIME</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">列作为分区列不进行列值的任何修饰。</font>
						<font style="vertical-align: inherit;">例如，这个表创建语句在MySQL中完全有效：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE成员（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    firstname VARCHAR（25）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lastname VARCHAR（25）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    username VARCHAR（16）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    电子邮件VARCHAR（35），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    加入DATE NOT NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITION BY KEY（已加入）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
分数6;</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							在MySQL 8.0中，还可以使用
						</font>
					</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或
						</font>
					</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATETIME</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">列作为分区列使用</font>
					</font><code class="literal">RANGE COLUMNS</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">和</font>
					</font><code class="literal">LIST
						COLUMNS</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">分区。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							其他分区类型需要一个分区表达式，它产生一个整数值或</font>
					</font><code class="literal">NULL</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">如果你想通过使用基于日期的分区</font>
					</font><code class="literal">RANGE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，
						</font>
					</font><code class="literal">LIST</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，</font>
					</font><code class="literal">HASH</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，或者
						</font>
					</font><code class="literal">LINEAR HASH</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，你可以简单地使用，其操作上的功能</font>
					</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，
						</font>
					</font><a class="link" href="data-types.html#time" title="11.3.2 TIME类型"><code class="literal">TIME</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或
						</font>
					</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATETIME</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">列，并返回这样的值，如下所示：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE成员（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    firstname VARCHAR（25）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lastname VARCHAR（25）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    username VARCHAR（16）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    电子邮件VARCHAR（35），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    加入DATE NOT NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
按比例分区（年份（已加入））（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分数p0值低于（1960），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p1值不到（1970年），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p2值低于（1980），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p3值低于（1990），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p4值低于MAXVALUE</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							使用日期进行分区的其他示例可以在本章的以下部分中找到：
						</font>
					</font>
				</p>
				<div class="itemizedlist">
					<ul class="itemizedlist" style="list-style-type: disc; ">
						<li class="listitem">
							<p>
								<a class="xref" href="partitioning.html#partitioning-range" title="23.2.1范围分区">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第23.2.1节“范围分区”</font>
									</font>
								</a>
							</p>
						</li>
						<li class="listitem">
							<p>
								<a class="xref" href="partitioning.html#partitioning-hash" title="23.2.4 HASH分区">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第23.2.4节“HASH分区”</font>
									</font>
								</a>
							</p>
						</li>
						<li class="listitem">
							<p>
								<a class="xref" href="partitioning.html#partitioning-linear-hash" title="23.2.4.1线性哈希分区">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第23.2.4.1节“线性哈希分区”</font>
									</font>
								</a>
							</p>
						</li>
					</ul>
				</div>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							有关基于日期的分区的更复杂示例，请参阅以下部分：
						</font>
					</font>
				</p>
				<div class="itemizedlist">
					<ul class="itemizedlist" style="list-style-type: disc; ">
						<li class="listitem">
							<p>
								<a class="xref" href="partitioning.html#partitioning-pruning" title="23.4分区修剪">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第23.4节“分区修剪”</font>
									</font>
								</a>
							</p>
						</li>
						<li class="listitem">
							<p>
								<a class="xref" href="partitioning.html#partitioning-subpartitions" title="23.2.6分区">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第23.2.6节“分区”</font>
									</font>
								</a>
							</p>
						</li>
					</ul>
				</div>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							MySQL的分区是采用最优化
						</font>
					</font><a class="link" href="functions.html#function_to-days"><code class="literal">TO_DAYS()</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，
						</font>
					</font><a class="link" href="functions.html#function_year"><code class="literal">YEAR()</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">和
						</font>
					</font><a class="link" href="functions.html#function_to-seconds"><code class="literal">TO_SECONDS()</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">功能。</font>
						<font style="vertical-align: inherit;">但是，您可以使用其他日期和时间函数返回一个整数或者</font>
					</font><code class="literal">NULL</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，例如
						</font>
					</font><a class="link" href="functions.html#function_weekday"><code class="literal">WEEKDAY()</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，
						</font>
					</font><a class="link" href="functions.html#function_dayofyear"><code class="literal">DAYOFYEAR()</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或
						</font>
					</font><a class="link" href="functions.html#function_month"><code class="literal">MONTH()</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">有关此类函数的更多信息</font>
					</font><a class="xref" href="functions.html#date-and-time-functions" title="12。7日期和时间函数">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">请参见
						</font><a class="xref" href="functions.html#date-and-time-functions" title="12。7日期和时间函数">
							<font style="vertical-align: inherit;">第12.7节“日期和时间函数”</font>
						</a>
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							重要的是要记住 - 无论您使用何种分区 - 分区始终自动编号，并在创建时按顺序编号，从
						</font>
					</font><code class="literal">0</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">将新行插入分区表时，正是这些分区号用于标识正确的分区。</font>
						<font style="vertical-align: inherit;">例如，如果你的表使用4个分区，这些分区编号</font>
					</font><code class="literal">0</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，
						</font>
					</font><code class="literal">1</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，</font>
					</font><code class="literal">2</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，和
						</font>
					</font><code class="literal">3</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">对于</font>
					</font><code class="literal">RANGE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">和
						</font>
					</font><code class="literal">LIST</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">分区类型，必须确保为每个分区号定义了分区。</font>
						<font style="vertical-align: inherit;">对于</font>
					</font><code class="literal">HASH</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">分区，用户提供的表达式必须求值为大于的整数值</font>
					</font><code class="literal">0</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">对于</font>
					</font><code class="literal">KEY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							分区，这个问题由MySQL服务器内部使用的散列函数自动处理。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							分区的名称通常遵循管理其他MySQL标识符的规则，例如表和数据库的标识符。</font>
						<font style="vertical-align: inherit;">但是，您应该注意分区名称不区分大小写。</font>
						<font style="vertical-align: inherit;">例如，以下
						</font>
					</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
							TABLE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">语句失败，如下所示：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>CREATE TABLE t2 (val INT)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>PARTITION BY LIST(val)(</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION mypart VALUES IN (1,3,5),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION MyPart VALUES IN (2,4,6)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;</font></font><strong class="userinput"><code>);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
错误1488（HY000）：重复的分区名称mypart</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							发生故障是因为MySQL看不到分区名称</font>
					</font><code class="literal">mypart</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">和
						</font>
					</font><code class="literal">MyPart</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							当您指定表的分区数时，必须将其表示为不带前导零的正，非零整数文字，并且可能不是表达式，如
						</font>
					</font><code class="literal">0.8E+01</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或</font>
					</font><code class="literal">6-2</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，即使它计算为整数值。</font>
						<font style="vertical-align: inherit;">不允许使用小数部分。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							在接下来的部分中，我们不一定提供可用于创建每个分区类型的语法的所有可能形式; </font>
						<font style="vertical-align: inherit;">有关此信息，请参见
						</font>
					</font><a class="xref" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第13.1.20节“CREATE TABLE语法”</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<div class="section">

					<div class="titlepage">
						<div>
							<div>
								<h3 class="title"><a name="partitioning-range"></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.2.1范围分区</font>
									</font>
								</h3>
							</div>
						</div>
					</div>
					<a class="indexterm" name="idm140091574234144"></a><a class="indexterm" name="idm140091574232656"></a>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								按范围分区的表的分区方式是每个分区包含分区表达式值位于给定范围内的行。</font>
							<font style="vertical-align: inherit;">范围应该是连续的但不重叠，并使用</font>
						</font><code class="literal">VALUES LESS THAN</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">运算符</font>
							<font style="vertical-align: inherit;">定义
							</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">对于接下来的几个示例，假设您要创建一个表，如下所示，以保存20个视频商店链的人事记录，编号为1到20：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE员工（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    fname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    雇用DATE NOT NULL DEFAULT'1970-01-01'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分隔DATE NOT NULL DEFAULT'9999-12-31'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    job_code INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    store_id INT NOT NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
					<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">

						<div class="admon-title">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									注意
								</font>
							</font>
						</div>
						<p>
							<font style="vertical-align: inherit;"></font><code class="literal">employees</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">此处使用</font>
								<font style="vertical-align: inherit;">
									的</font>
								<font style="vertical-align: inherit;">表没有主键或唯一键。</font>
								<font style="vertical-align: inherit;">虽然这些示例的工作方式与本讨论的目的相同，但您应该记住，实际上表中很可能有主键，唯一键或两者，并且分区列的允许选择取决于用于这些列的列密钥，如果有的话。</font>
								<font style="vertical-align: inherit;">有关这些问题的讨论，请参见
								</font>
							</font><a class="xref" href="partitioning.html#partitioning-limitations-partitioning-keys-unique-keys" title="23.6.1对密钥，主密钥和唯一密钥进行分区">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">第23.6.1节“分区键，主键和唯一键”</font>
								</font>
							</a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">。
								</font>
							</font>
						</p>
					</div>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								根据您的需要，可以通过多种方式按范围对此表进行分区。</font>
							<font style="vertical-align: inherit;">一种方法是使用该
							</font>
						</font><code class="literal">store_id</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">列。</font>
							<font style="vertical-align: inherit;">例如，您可能决定通过添加</font>
						</font><code class="literal">PARTITION BY RANGE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">如下所示</font>
							<font style="vertical-align: inherit;">的</font>
							<font style="vertical-align: inherit;">子句</font>
							<font style="vertical-align: inherit;">来对表4进行分区
							</font>
							<font style="vertical-align: inherit;">：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE员工（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    fname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    雇用DATE NOT NULL DEFAULT'1970-01-01'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分隔DATE NOT NULL DEFAULT'9999-12-31'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    job_code INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    store_id INT NOT NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PAR BY BY RANGE（store_id）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p0值小于（6），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p1值小于（11），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p2值小于（16），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p3值低于（21）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								在该分区方案中，对应于在商店1到5工作的雇员的所有行存储在分区中
							</font>
						</font><code class="literal">p0</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，对于在商店6到10中使用的那些行存储在分区中</font>
						</font><code class="literal">p1</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，等等。</font>
							<font style="vertical-align: inherit;">每个分区按从低到高的顺序定义。</font>
							<font style="vertical-align: inherit;">这是</font>
						</font><code class="literal">PARTITION BY RANGE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语法</font>
							<font style="vertical-align: inherit;">的要求</font>
							<font style="vertical-align: inherit;">; </font>
						</font><code class="literal">if ... elseif ...</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">在这方面，</font>
							<font style="vertical-align: inherit;">你可以认为它类似于</font>
							<font style="vertical-align: inherit;">C或Java中</font>
							<font style="vertical-align: inherit;">的一系列
							</font>
							<font style="vertical-align: inherit;">语句。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								这是很容易确定包含数据的新行
							</font>
						</font><code class="literal">(72, 'Mitchell', 'Wilson', '1998-06-25', NULL,
							13)</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">插入分区</font>
						</font><code class="literal">p2</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，但是当你的链增加了21会发生什么</font>
						</font><sup>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">ST</font>
							</font>
						</sup>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">店？</font>
							<font style="vertical-align: inherit;">在此方案下，没有规则覆盖</font>
						</font><code class="literal">store_id</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								大于20 </font>
							<font style="vertical-align: inherit;">的行</font>
							<font style="vertical-align: inherit;">，因此导致错误，因为服务器不知道将其放置在何处。</font>
							<font style="vertical-align: inherit;">您可以通过</font>
							<font style="vertical-align: inherit;">在</font>
							<font style="vertical-align: inherit;">语句中</font>
							<font style="vertical-align: inherit;">使用</font>
						</font><span class="quote">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">“ </font>
							</font><span class="quote">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">catchall</font>
								</font>
							</span>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;"> ”</font>
							</font>
						</span> <code class="literal">VALUES LESS
							THAN</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">子句</font>
							<font style="vertical-align: inherit;">来防止这种情况发生</font>
							<font style="vertical-align: inherit;">，该</font>
						</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句提供的所有值都大于显式命名的最高值：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE员工（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    fname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    雇用DATE NOT NULL DEFAULT'1970-01-01'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分隔DATE NOT NULL DEFAULT'9999-12-31'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    job_code INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    store_id INT NOT NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PAR BY BY RANGE（store_id）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p0值小于（6），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p1值小于（11），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p2值小于（16），</font></font><font></font>
    <span class="emphasis"><em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">PARTITION p3值比MAXVALUE低</font></font></em></span><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								（与本章中的其他示例一样，我们假设默认存储引擎是</font>
						</font><code class="literal">InnoDB</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。）
							</font>
						</font>
					</p>
					<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">

						<div class="admon-title">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									注意
								</font>
							</font>
						</div>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									找不到匹配值时避免错误的另一种方法是使用</font>
							</font><code class="literal">IGNORE</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">关键字作为</font>
							</font><a class="link" href="sql-syntax.html#insert" title="13.2.6 INSERT语法"><code class="literal">INSERT</code></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">语句的</font>
								<font style="vertical-align: inherit;">一部分
								</font>
								<font style="vertical-align: inherit;">。</font>
								<font style="vertical-align: inherit;">有关示例，请参见</font>
							</font><a class="xref" href="partitioning.html#partitioning-list" title="23.2.2列表分区">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">第23.2.2节“LIST分区”</font>
								</font>
							</a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">。</font>
								<font style="vertical-align: inherit;">有关的一般信息
								</font>
							</font><a class="xref" href="sql-syntax.html#insert" title="13.2.6 INSERT语法">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，</font>
								</font>
							</a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">另请参见
								</font><a class="xref" href="sql-syntax.html#insert" title="13.2.6 INSERT语法">
									<font style="vertical-align: inherit;">第13.2.6节“INSERT语法”</font>
								</a>
							</font><code class="literal">IGNORE</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">。
								</font>
							</font>
						</p>
					</div>
					<p>
						<code class="literal">MAXVALUE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">表示一个整数值，该值始终大于最大可能的整数值（在数学语言中，它用作
							</font>
						</font><span class="firstterm">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">最小上限</font>
							</font>
						</span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">）。</font>
							<font style="vertical-align: inherit;">现在，</font>
						</font><code class="literal">store_id</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">列值大于或等于16（定义的最高值）的</font>
							<font style="vertical-align: inherit;">任何行都</font>
							<font style="vertical-align: inherit;">存储在分区中</font>
						</font><code class="literal">p3</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">在未来的某个时刻 - 当商店数量增加到25个，30个或更多时 - 您可以使用
							</font>
						</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
							 class="literal">ALTER
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句为商店21-25,26-30等添加新分区（参见
							</font>
						</font><a class="xref" href="partitioning.html#partitioning-management" title="23.3分区管理">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第23.3节， “分区管理”</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，有关如何执行此操作的详细信息。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								以同样的方式，您可以根据员工职务代码对表进行分区 - 即基于</font>
						</font><code class="literal">job_code</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">列值的</font>
							<font style="vertical-align: inherit;">范围
							</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">例如 - 假设两位数的工作代码用于常规（店内）工作人员，三位数代码用于办公室和支持人员，四位数代码用于管理职位 - 您可以创建分区表使用以下声明：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE员工（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    fname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    雇用DATE NOT NULL DEFAULT'1970-01-01'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分隔DATE NOT NULL DEFAULT'9999-12-31'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    job_code INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    store_id INT NOT NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
按范围划分（job_code）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p0值小于（100），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p1值小于（1000），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p2值小于（10000）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								在这种情况下，与店内工人相关的所有行都将存储在分区中</font>
						</font><code class="literal">p0</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，与办公室和支持人员</font>
						</font><code class="literal">p1</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">相关的行以及与分区中的管理人员相关的行</font>
						</font><code class="literal">p2</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								也可以在</font>
						</font><code class="literal">VALUES LESS
							THAN</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">子句中</font>
							<font style="vertical-align: inherit;">使用表达式</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">但是，MySQL必须能够将表达式的返回值作为</font>
						</font><code class="literal">LESS
							THAN</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">（</font>
						</font><code class="literal">&lt;</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">）比较的</font>
							<font style="vertical-align: inherit;">一部分进行评估</font>
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p><a class="indexterm" name="idm140091574190784"></a>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								您可以使用基于两</font>
						</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">列</font>
							<font style="vertical-align: inherit;">中的一</font>
							<font style="vertical-align: inherit;">列</font>
							<font style="vertical-align: inherit;">的表达式，而不是根据商店编号拆分表数据
							</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">例如，假设您希望根据每个员工离开公司的年份进行分区; </font>
							<font style="vertical-align: inherit;">也就是说，的价值
							</font>
						</font><a class="link" href="functions.html#function_year"><code class="literal">YEAR(separated)</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
						</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">此处显示了实现此类分区方案</font>
							<font style="vertical-align: inherit;">的</font>
							<font style="vertical-align: inherit;">语句</font>
							<font style="vertical-align: inherit;">示例
							</font>
							<font style="vertical-align: inherit;">：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE员工（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    fname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    雇用DATE NOT NULL DEFAULT'1970-01-01'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分隔DATE NOT NULL DEFAULT'9999-12-31'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    job_code INT，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    store_id INT</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
按比例分区（年份（分开））（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分数p0值低于（1991），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p1值低于（1996），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p2值低于（2001），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p3值比MAXVALUE低</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								在这个方案中，对于1991年之前离开的所有员工，行存储在分区中</font>
						</font><code class="literal">p0</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">; </font>
							<font style="vertical-align: inherit;">对于那些谁留在1991年至1995年，在</font>
						</font><code class="literal">p1</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">; </font>
							<font style="vertical-align: inherit;">对于那些谁留在1996年年内至2000年，在
							</font>
						</font><code class="literal">p2</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">; </font>
							<font style="vertical-align: inherit;">以及在2000年之后离开的任何工人</font>
						</font><code class="literal">p3</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								也可以</font>
							<font style="vertical-align: inherit;">使用</font>
							<font style="vertical-align: inherit;">函数根据</font>
							<font style="vertical-align: inherit;">列
							</font>
						</font><code class="literal">RANGE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">的值对
							</font>
							<font style="vertical-align: inherit;">表进行分区
							</font>
							<font style="vertical-align: inherit;">，如下例所示：
							</font>
						</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">TIMESTAMP</code></a>
						<font style="vertical-align: inherit;"></font><a class="link" href="functions.html#function_unix-timestamp"><code
							 class="literal">UNIX_TIMESTAMP()</code></a>
						<font style="vertical-align: inherit;"></font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE quarterly_report_status（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    report_id INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    report_status VARCHAR（20）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    report_updated TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITION BY RANGE（UNIX_TIMESTAMP（report_updated））（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p0 VALUE少于（UNIX_TIMESTAMP（'2008-01-01 00:00:00'）），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p1 VALUE少于（UNIX_TIMESTAMP（'2008-04-01 00:00:00'）），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p2 VALUE少于（UNIX_TIMESTAMP（'2008-07-01 00:00:00'）），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p3 VALUES比（UNIX_TIMESTAMP（'2008-10-01 00:00:00'）），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p4 VALUES少于（UNIX_TIMESTAMP（'2009-01-01 00:00:00'）），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p5 VALUES比（UNIX_TIMESTAMP（'2009-04-01 00:00:00'）），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p6 VALUES（UNIX_TIMESTAMP（'2009-07-01 00:00:00'）），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p7 VALUES少于（UNIX_TIMESTAMP（'2009-10-01 00:00:00'）），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p8 VALUE少于（UNIX_TIMESTAMP（'2010-01-01 00:00:00'）），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p9值小于（MAXVALUE）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;"></font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code
							 class="literal">TIMESTAMP</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">不允许</font>
							<font style="vertical-align: inherit;">
								涉及</font>
							<font style="vertical-align: inherit;">值的</font>
							<font style="vertical-align: inherit;">任何其他表达式
							</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">（参见Bug＃42849。）
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								当满足以下一个或多个条件时，范围分区特别有用：
							</font>
						</font>
					</p>
					<div class="itemizedlist">
						<ul class="itemizedlist" style="list-style-type: disc; ">
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											您想要或需要删除</font>
									</font><span class="quote">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">“ </font>
										</font><span class="quote">
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">旧</font>
											</font>
										</span>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;"> ”</font>
										</font>
									</span>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">数据。</font>
										<font style="vertical-align: inherit;">如果您使用前面显示的分区方案
										</font>
									</font><code class="literal">employees</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">，则可以简单地使用
										</font>
									</font><code class="literal">ALTER TABLE employees DROP PARTITION p0;</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											删除与1991年之前停止为公司工作的员工相关的所有行。（请参见
										</font>
									</font><a class="xref" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">第13.1.9节“ALTER TABLE语法”</font>
										</font>
									</a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">和
										</font>
									</font><a class="xref" href="partitioning.html#partitioning-management" title="23.3分区管理">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">第23.3节，“分区管理”</font>
										</font>
									</a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">，以获取更多信息。）对于包含大量行的表，这比运行</font>
									</font><a class="link" href="sql-syntax.html#delete" title="13.2.2 DELETE语法"><code class="literal">DELETE</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">查询（例如）
										</font>
										<font style="vertical-align: inherit;">更有效
										</font>
									</font><code class="literal">DELETE FROM employees WHERE YEAR(separated) &lt;=
										1990;</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											您希望使用包含日期或时间值的列，或包含来自其他一些系列的值。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											您经常运行直接依赖于用于对表进行分区的列的查询。</font>
										<font style="vertical-align: inherit;">例如，当执行诸如</font>
									</font><a class="link" href="sql-syntax.html#explain" title="13.8.2 EXPLAIN语法"><code class="literal">EXPLAIN
											SELECT
											COUNT(*) FROM employees WHERE separated BETWEEN '2000-01-01'
											AND '2000-12-31' GROUP BY store_id;</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">MySQL </font>
										<font style="vertical-align: inherit;">的查询时
										</font>
										<font style="vertical-align: inherit;">，MySQL可以快速确定只</font>
									</font><code class="literal">p2</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											需要扫描</font>
										<font style="vertical-align: inherit;">分区</font>
										<font style="vertical-align: inherit;">，因为其余分区不能包含满足该</font>
									</font><code class="literal">WHERE</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											子句的</font>
										<font style="vertical-align: inherit;">任何记录</font>
										<font style="vertical-align: inherit;">。</font>
										<font style="vertical-align: inherit;">有关如何完成此操作的详细信息</font>
									</font><a class="xref" href="partitioning.html#partitioning-pruning" title="23.4分区修剪">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">，</font>
										</font>
									</a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">请参见</font><a class="xref" href="partitioning.html#partitioning-pruning"
										 title="23.4分区修剪">
											<font style="vertical-align: inherit;">第23.4节“分区修剪”</font>
										</a>
										<font style="vertical-align: inherit;">。
										</font>
									</font>
								</p>
							</li>
						</ul>
					</div>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								这种分区的一种变体是</font>
						</font><code class="literal">RANGE
							COLUMNS</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区。</font>
							<font style="vertical-align: inherit;">通过分区，</font>
						</font><code class="literal">RANGE
							COLUMNS</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">可以使用多列来定义分区范围，这些分区范围既适用于分区中行的放置，也适用于在执行分区修剪时确定包含或排除特定分区。</font>
							<font style="vertical-align: inherit;">有关</font>
							<font style="vertical-align: inherit;">更多信息</font>
						</font><a class="xref" href="partitioning.html#partitioning-columns-range" title="23.2.3.1 RANGE COLUMNS分区">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">请参见</font><a class="xref" href="partitioning.html#partitioning-columns-range"
							 title="23.2.3.1 RANGE COLUMNS分区">
								<font style="vertical-align: inherit;">第23.2.3.1节“RANGE COLUMNS分区”</font>
							</a>
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p><a name="partitioning-time-intervals"></a><b>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">基于时间间隔的分区方案。&nbsp;</font>
							</font>
						</b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								如果您希望在MySQL 8.0中基于时间范围或时间间隔实现分区方案，您有两种选择：
							</font>
						</font>
					</p>
					<div class="orderedlist">
						<ol class="orderedlist" type="1">
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											由分区表</font>
									</font><code class="literal">RANGE</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">，以及用于分隔表达，采用功能上的操作
										</font>
									</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATE</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">，
										</font>
									</font><a class="link" href="data-types.html#time" title="11.3.2 TIME类型"><code class="literal">TIME</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">或
										</font>
									</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATETIME</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">柱并返回一个整数值，如下所示：
										</font>
									</font>
								</p>
								<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE成员（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    firstname VARCHAR（25）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lastname VARCHAR（25）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    username VARCHAR（16）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    电子邮件VARCHAR（35），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    加入DATE NOT NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
按比例分区（年份（已加入））（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分数p0值低于（1960），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p1值不到（1970年），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p2值低于（1980），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p3值低于（1990），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p4值低于MAXVALUE</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											在MySQL 8.0中，还可以</font>
										<font style="vertical-align: inherit;">使用</font>
										<font style="vertical-align: inherit;">函数</font>
									</font><code class="literal">RANGE</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">基于</font>
									</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">TIMESTAMP</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">列
										</font>
										<font style="vertical-align: inherit;">的值对
										</font>
										<font style="vertical-align: inherit;">表进行分区</font>
									</font><a class="link" href="functions.html#function_unix-timestamp"><code class="literal">UNIX_TIMESTAMP()</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">，如下例所示：
										</font>
									</font>
								</p>
								<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE quarterly_report_status（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    report_id INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    report_status VARCHAR（20）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    report_updated TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITION BY RANGE（UNIX_TIMESTAMP（report_updated））（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p0 VALUE少于（UNIX_TIMESTAMP（'2008-01-01 00:00:00'）），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p1 VALUE少于（UNIX_TIMESTAMP（'2008-04-01 00:00:00'）），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p2 VALUE少于（UNIX_TIMESTAMP（'2008-07-01 00:00:00'）），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p3 VALUES比（UNIX_TIMESTAMP（'2008-10-01 00:00:00'）），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p4 VALUES少于（UNIX_TIMESTAMP（'2009-01-01 00:00:00'）），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p5 VALUES比（UNIX_TIMESTAMP（'2009-04-01 00:00:00'）），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p6 VALUES（UNIX_TIMESTAMP（'2009-07-01 00:00:00'）），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p7 VALUES少于（UNIX_TIMESTAMP（'2009-10-01 00:00:00'）），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p8 VALUE少于（UNIX_TIMESTAMP（'2010-01-01 00:00:00'）），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p9值小于（MAXVALUE）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											在MySQL 8.0中，</font>
									</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">TIMESTAMP</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">不允许</font>
										<font style="vertical-align: inherit;">涉及</font>
										<font style="vertical-align: inherit;">值的</font>
										<font style="vertical-align: inherit;">任何其他表达式
										</font>
										<font style="vertical-align: inherit;">。</font>
										<font style="vertical-align: inherit;">（参见Bug＃42849。）
										</font>
									</font>
								</p>
								<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">

									<div class="admon-title">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												注意
											</font>
										</font>
									</div>
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												在MySQL 8.0中，也可以
											</font>
										</font><a class="link" href="functions.html#function_unix-timestamp"><code class="literal">UNIX_TIMESTAMP(timestamp_column)</code></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												将分区表达式用作分区的表</font>
										</font><code class="literal">LIST</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">。</font>
											<font style="vertical-align: inherit;">但是，这样做通常是不切实际的。
											</font>
										</font>
									</p>
								</div>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;"></font><code class="literal">RANGE COLUMNS</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">使用</font>
									</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATE</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">或
										</font>
									</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATETIME</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">列作为分区列</font>
										<font style="vertical-align: inherit;">
											对表进行</font>
										<font style="vertical-align: inherit;">分区。</font>
										<font style="vertical-align: inherit;">例如，
										</font>
									</font><code class="literal">members</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">可以</font>
									</font><code class="literal">joined</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">直接</font>
										<font style="vertical-align: inherit;">使用</font>
										<font style="vertical-align: inherit;">列</font>
										<font style="vertical-align: inherit;">定义表
										</font>
										<font style="vertical-align: inherit;">，如下所示：
										</font>
									</font>
								</p>
								<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE成员（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    firstname VARCHAR（25）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lastname VARCHAR（25）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    username VARCHAR（16）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    电子邮件VARCHAR（35），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    加入DATE NOT NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
RANGE COLUMNS（加入）分区（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p0值低于（'1960-01-01'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p1值低于（'1970-01-01'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p2值不到（'1980-01-01'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p3的价值低于（'1990-01-01'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p4值低于MAXVALUE</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
							</li>
						</ol>
					</div>
					<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
						<div class="admon-title">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									注意
								</font>
							</font>
						</div>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									使用除了</font>
							</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATE</code></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">或
								</font>
							</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATETIME</code></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">不支持的
								</font>
								<font style="vertical-align: inherit;">日期或时间类型的分区列</font>
							</font><code class="literal">RANGE COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">。
								</font>
							</font>
						</p>
					</div>

				</div>
				<div class="section">
					<div class="titlepage">
						<div>
							<div>
								<h3 class="title"><a name="partitioning-list"></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.2.2列表分区</font>
									</font>
								</h3>

							</div>

						</div>

					</div>
					<a class="indexterm" name="idm140091574123264"></a><a class="indexterm" name="idm140091574121776"></a>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								MySQL中的列表分区在很多方面类似于范围分区。</font>
							<font style="vertical-align: inherit;">与分区依据一样</font>
						</font><code class="literal">RANGE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，必须明确定义每个分区。</font>
							<font style="vertical-align: inherit;">两种类型的分区之间的主要区别在于，在列表分区中，每个分区是根据一组值列表中的一个列值中的列值的成员资格来定义和选择的，而不是在一组连续范围中的一个中定义和选择的。值。</font>
							<font style="vertical-align: inherit;">这是通过使用</font>
							<font style="vertical-align: inherit;">where
							</font>
							<font style="vertical-align: inherit;">值是列值或基于列值的表达式并返回整数值，然后通过a定义每个分区来完成的
							</font>
							<font style="vertical-align: inherit;">，其中
							</font>
							<font style="vertical-align: inherit;">是逗号分隔的整数列表。
							</font>
						</font><code class="literal">PARTITION BY
							LIST(<em class="replaceable"><code>expr</code></em>)</code>
						<font style="vertical-align: inherit;"></font><em class="replaceable"><code>expr</code></em>
						<font style="vertical-align: inherit;"></font><code class="literal">VALUES IN
							(<em class="replaceable"><code>value_list</code></em>)</code>
						<font style="vertical-align: inherit;"></font><em class="replaceable"><code>value_list</code></em>
						<font style="vertical-align: inherit;"></font>
					</p>
					<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">

						<div class="admon-title">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									注意
								</font>
							</font>
						</div>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									在MySQL 8.0中，可以</font>
								<font style="vertical-align: inherit;">在分区时</font>
								<font style="vertical-align: inherit;">仅匹配整数列表（并且可能
								</font>
							</font><code class="literal">NULL</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">- 请
								</font>
							</font><a class="xref" href="partitioning.html#partitioning-handling-nulls" title="23.2.7 MySQL分区如何处理NULL">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">参见第23.2.7节“MySQL分区如何处理NULL”</font>
								</font>
							</a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">）</font>
							</font><code class="literal">LIST</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">。
								</font>
							</font>
						</p>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									但是，在使用</font>
							</font><code class="literal">LIST COLUMN</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">分区时，</font>
								<font style="vertical-align: inherit;">可以在值列表中使用其他列类型</font>
								<font style="vertical-align: inherit;">，本节稍后将对此进行描述。
								</font>
							</font>
						</p>
					</div>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								与范围定义的分区的情况不同，列表分区不需要以任何特定顺序声明。</font>
							<font style="vertical-align: inherit;">有关更详细的语法信息，请参见
							</font>
						</font><a class="xref" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第13.1.20节“CREATE TABLE语法”</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								对于下面的示例，我们假设要分区的表的基本定义由</font>
						</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">此处显示</font>
							<font style="vertical-align: inherit;">的</font>
							<font style="vertical-align: inherit;">语句</font>
							<font style="vertical-align: inherit;">提供
							</font>
							<font style="vertical-align: inherit;">：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE员工（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    fname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    雇用DATE NOT NULL DEFAULT'1970-01-01'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分隔DATE NOT NULL DEFAULT'9999-12-31'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    job_code INT，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    store_id INT</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								（这是用作</font>
						</font><a class="xref" href="partitioning.html#partitioning-range" title="23.2.1范围分区">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第23.2.1节“RANGE分区”中</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">示例的基础的表
							</font>
							<font style="vertical-align: inherit;">。与其他分区示例一样，我们假设
							</font>
						</font><a class="link" href="server-administration.html#sysvar_default_storage_engine"><code class="literal">default_storage_engine</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">是
							</font>
						</font><code class="literal">InnoDB</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。）
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								假设在4个特许经营店中分布有20个视频商店，如下表所示。
							</font>
						</font>
					</p>
					<div class="informaltable">
						<table summary="An example of 20 video stores distributed among 4 regional franchises, as described in the preceding text.">
							<colgroup>
								<col width="30%">
								<col width="70%">
							</colgroup>
							<thead>
								<tr>
									<th scope="col">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">区域</font>
										</font>
									</th>
									<th scope="col">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">商店ID号码</font>
										</font>
									</th>
								</tr>
							</thead>
							<tbody>
								<tr>
									<td scope="row">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">北</font>
										</font>
									</td>
									<td>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">3,5,6,9,17</font>
										</font>
									</td>
								</tr>
								<tr>
									<td scope="row">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">东</font>
										</font>
									</td>
									<td>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">1,2,10,11,19,20</font>
										</font>
									</td>
								</tr>
								<tr>
									<td scope="row">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">西方</font>
										</font>
									</td>
									<td>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">4,12,13,14,18</font>
										</font>
									</td>
								</tr>
								<tr>
									<td scope="row">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">中央</font>
										</font>
									</td>
									<td>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">7,8,15,16</font>
										</font>
									</td>
								</tr>
							</tbody>
						</table>
					</div>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								要对属于同一区域的存储的行存储在同一分区中的方式对此表进行分区，可以使用</font>
						</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								此处显示</font>
							<font style="vertical-align: inherit;">的</font>
							<font style="vertical-align: inherit;">语句：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE员工（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    fname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    雇用DATE NOT NULL DEFAULT'1970-01-01'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分隔DATE NOT NULL DEFAULT'9999-12-31'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    job_code INT，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    store_id INT</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARISTION BY LIST（store_id）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （3,5,6,9,17）中的分区值，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （1,2,10,11,19,20）中的分区值，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （4,12,13,14,18）中的分区值（PYest VALUES）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分配中心价值（7,8,15,16）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								这样可以轻松地将与特定区域相关的员工记录添加到表中或从表中删除。</font>
							<font style="vertical-align: inherit;">例如，假设西部地区的所有商店都出售给另一家公司。</font>
							<font style="vertical-align: inherit;">在MySQL 8.0中，可以使用查询删除与在该区域中的商店工作的员工相关的所有行，该查询
							</font>
						</font><code class="literal">ALTER TABLE employees TRUNCATE PARTITION
							pWest</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">可以比等效</font>
						</font><a class="link" href="sql-syntax.html#delete" title="13.2.2 DELETE语法"><code class="literal">DELETE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								语句</font>
							<font style="vertical-align: inherit;">更有效地执行</font>
						</font><code class="literal">DELETE FROM employees WHERE store_id IN
							(4,12,13,14,18);</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">（使用</font>
						</font><code class="literal">ALTER TABLE
							employees DROP PARTITION pWest</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">也会删除所有这些行，但也会</font>
						</font><code class="literal">pWest</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">从表的定义中</font>
							<font style="vertical-align: inherit;">删除分区
							</font>
							<font style="vertical-align: inherit;">;您需要使用</font>
						</font><code class="literal">ALTER TABLE ... ADD
							PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句来恢复表的原始分区方案。）
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								与</font>
						</font><code class="literal">RANGE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区一样，可以将</font>
						</font><code class="literal">LIST</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区与散列或密钥分区</font>
							<font style="vertical-align: inherit;">相结合</font>
							<font style="vertical-align: inherit;">，以产生复合分区（子分区）。</font>
							<font style="vertical-align: inherit;">请参见
							</font>
						</font><a class="xref" href="partitioning.html#partitioning-subpartitions" title="23.2.6分区">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第23.2.6节“子分区”</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								与</font>
						</font><code class="literal">RANGE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区</font>
							<font style="vertical-align: inherit;">的情况不同</font>
							<font style="vertical-align: inherit;">，没有</font>
						</font><span class="quote">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">“ </font>
							</font><span class="quote">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">全能</font>
								</font>
							</span>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;"> ”，</font>
							</font>
						</span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">例如
							</font>
						</font><code class="literal">MAXVALUE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">; </font>
							<font style="vertical-align: inherit;">分区表达式的所有期望值都应包含在</font>
						</font><code class="literal">PARTITION
							... VALUES IN (...)</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">子句中。</font>
						</font><a class="link" href="sql-syntax.html#insert" title="13.2.6 INSERT语法"><code class="literal">INSERT</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">包含不匹配的分区列值</font>
							<font style="vertical-align: inherit;">的
							</font>
							<font style="vertical-align: inherit;">语句将失败并显示错误，如以下示例所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>CREATE TABLE h2 (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;    </font></font><strong class="userinput"><code>c1 INT,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;    </font></font><strong class="userinput"><code>c2 INT</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>PARTITION BY LIST(c1) (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;    </font></font><strong class="userinput"><code>PARTITION p0 VALUES IN (1, 4, 7),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;    </font></font><strong class="userinput"><code>PARTITION p1 VALUES IN (2, 5, 8)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;</font></font><strong class="userinput"><code>);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.11秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font><span class="errortext"><font style="vertical-align: inherit;">ERROR 1525（HY000）：表没有值为3的分区</font></span></font><strong class="userinput"><code>INSERT INTO h2 VALUES (3, 5);</code></strong>
<span class="errortext"><font style="vertical-align: inherit;"></font></span>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								当使用单个</font>
						</font><a class="link" href="sql-syntax.html#insert" title="13.2.6 INSERT语法"><code class="literal">INSERT</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句</font>
							<font style="vertical-align: inherit;">将多个行插入
							</font>
							<font style="vertical-align: inherit;">单个
							</font>
						</font><a class="link" href="innodb-storage-engine.html" title="第15章InnoDB存储引擎"><code class="literal">InnoDB</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">表时，请
							</font>
						</font><code class="literal">InnoDB</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">将该语句视为单个事务，以便存在任何不匹配的值会导致语句完全失败，因此不会插入任何行。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								您可以使用</font>
						</font><code class="literal">IGNORE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">关键字</font>
							<font style="vertical-align: inherit;">忽略此类错误
							</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">如果这样做，则不会插入包含不匹配的分区列值的行，但</font>
						</font><span class="emphasis"><em>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">会</font>
								</font>
							</em></span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">插入</font>
							<font style="vertical-align: inherit;">具有匹配值的任何行</font>
							<font style="vertical-align: inherit;">，并且不会报告任何错误：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>TRUNCATE h2;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，1行受影响（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>SELECT * FROM h2;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
空集（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>INSERT IGNORE INTO h2 VALUES (2, 5), (6, 10), (7, 5), (3, 1), (1, 9);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，3行受影响（0.00秒）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
记录：5个重复：2个警告：0</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>SELECT * FROM h2;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + ------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">c1 | </font><font style="vertical-align: inherit;">c2 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + ------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">7 | </font><font style="vertical-align: inherit;">5 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">1 | </font><font style="vertical-align: inherit;">9 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">2 | </font><font style="vertical-align: inherit;">5 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + ------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
3组（0.00秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								MySQL 8.0还提供对</font>
						</font><code class="literal">LIST
							COLUMNS</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区的</font>
							<font style="vertical-align: inherit;">支持，</font>
							<font style="vertical-align: inherit;">分区是一种</font>
						</font><code class="literal">LIST</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区</font>
							<font style="vertical-align: inherit;">变体，
							</font>
							<font style="vertical-align: inherit;">它允许您使用除整数类型之外的类型列来分区列，并使用多个列作为分区键。</font>
							<font style="vertical-align: inherit;">有关更多信息，请参见
							</font>
						</font><a class="xref" href="partitioning.html#partitioning-columns-list" title="23.2.3.2列表列分区">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第23.2.3.2节“列表列分区”</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
				</div>
				<div class="section">
					<div class="titlepage">
						<div>
							<div>
								<h3 class="title"><a name="partitioning-columns"></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.2.3列分区</font>
									</font>
								</h3>

							</div>

						</div>

					</div>
					<div class="toc">
						<dl class="toc"><dt><span class="section"><a href="partitioning.html#partitioning-columns-range">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">23.2.3.1 RANGE COLUMNS分区</font>
										</font>
									</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-columns-list">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">23.2.3.2列表列分区</font>
										</font>
									</a></span></dt></dl>
					</div>
					<a class="indexterm" name="idm140091574050064"></a><a class="indexterm" name="idm140091574048576"></a><a class="indexterm"
					 name="idm140091574047504"></a><a class="indexterm" name="idm140091574046416"></a><a class="indexterm" name="idm140091574045328"></a><a
					 class="indexterm" name="idm140091574044256"></a>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								接下来的两节讨论
							</font>
						</font><span class="firstterm"><code class="literal">COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									分区</font>
							</font>
						</span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，它们是变体
							</font>
						</font><code class="literal">RANGE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">和</font>
						</font><code class="literal">LIST</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								分区。</font>
						</font><code class="literal">COLUMNS</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区允许在分区键中使用多个列。</font>
							<font style="vertical-align: inherit;">所有这些列都被考虑在内，以便在分区中放置行，以及确定在分区修剪中检查哪些分区的匹配行。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								此外，</font>
						</font><code class="literal">RANGE COLUMNS</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区和</font>
						</font><code class="literal">LIST COLUMNS</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区都支持使用非整数列来定义值范围或列表成员。</font>
							<font style="vertical-align: inherit;">允许的数据类型显示在以下列表中：
							</font>
						</font>
					</p>
					<div class="itemizedlist">
						<ul class="itemizedlist" style="list-style-type: disc; ">
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											所有整数类型：</font>
									</font><a class="link" href="data-types.html#integer-types" title="11.2.1整数类型（精确值） -  INTEGER，INT，SMALLINT，TINYINT，MEDIUMINT，BIGINT"><code
										 class="literal">TINYINT</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">，
										</font>
									</font><a class="link" href="data-types.html#integer-types" title="11.2.1整数类型（精确值） -  INTEGER，INT，SMALLINT，TINYINT，MEDIUMINT，BIGINT"><code
										 class="literal">SMALLINT</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">，
										</font>
									</font><a class="link" href="data-types.html#integer-types" title="11.2.1整数类型（精确值） -  INTEGER，INT，SMALLINT，TINYINT，MEDIUMINT，BIGINT"><code
										 class="literal">MEDIUMINT</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">，
										</font>
									</font><a class="link" href="data-types.html#integer-types" title="11.2.1整数类型（精确值） -  INTEGER，INT，SMALLINT，TINYINT，MEDIUMINT，BIGINT"><code
										 class="literal">INT</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											（</font>
									</font><a class="link" href="data-types.html#integer-types" title="11.2.1整数类型（精确值） -  INTEGER，INT，SMALLINT，TINYINT，MEDIUMINT，BIGINT"><code
										 class="literal">INTEGER</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">），和
										</font>
									</font><a class="link" href="data-types.html#integer-types" title="11.2.1整数类型（精确值） -  INTEGER，INT，SMALLINT，TINYINT，MEDIUMINT，BIGINT"><code
										 class="literal">BIGINT</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">。</font>
										<font style="vertical-align: inherit;">（这是相同的，与通过分割</font>
									</font><code class="literal">RANGE</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">和
										</font>
									</font><code class="literal">LIST</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">）。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											其他数字数据类型（例如
										</font>
									</font><a class="link" href="data-types.html#fixed-point-types" title="11.2.2定点类型（精确值） -  DECIMAL，NUMERIC"><code
										 class="literal">DECIMAL</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">或
										</font>
									</font><a class="link" href="data-types.html#floating-point-types" title="11.2.3浮点类型（近似值） -  FLOAT，DOUBLE"><code
										 class="literal">FLOAT</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">）不支持作为分区列。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATE</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">和
										</font>
									</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATETIME</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											使用与日期或时间相关的其他数据类型的列不支持作为分区列。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											下面的字符串类型：
										</font>
									</font><a class="link" href="data-types.html#char" title="11.4.1 CHAR和VARCHAR类型"><code class="literal">CHAR</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">，
										</font>
									</font><a class="link" href="data-types.html#char" title="11.4.1 CHAR和VARCHAR类型"><code class="literal">VARCHAR</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">，
										</font>
									</font><a class="link" href="data-types.html#binary-varbinary" title="11.4.2 BINARY和VARBINARY类型"><code class="literal">BINARY</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">，和
										</font>
									</font><a class="link" href="data-types.html#binary-varbinary" title="11.4.2 BINARY和VARBINARY类型"><code class="literal">VARBINARY</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">。
										</font>
									</font>
								</p>
								<p>
									<a class="link" href="data-types.html#blob" title="11.4.3 BLOB和TEXT类型"><code class="literal">TEXT</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">并且
										</font>
									</font><a class="link" href="data-types.html#blob" title="11.4.3 BLOB和TEXT类型"><code class="literal">BLOB</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">不支持列作为分区列。
										</font>
									</font>
								</p>
							</li>
						</ul>
					</div>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">在接下来的两节中</font>
							<font style="vertical-align: inherit;">
								讨论</font>
						</font><code class="literal">RANGE COLUMNS</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">和
							</font>
						</font><code class="literal">LIST COLUMNS</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区假设您已经熟悉MySQL 5.1及更高版本支持的基于范围和列表的分区; </font>
							<font style="vertical-align: inherit;">有关这些的更多信息，请分别参见
							</font>
						</font><a class="xref" href="partitioning.html#partitioning-range" title="23.2.1范围分区">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第23.2.1节“RANGE分区”</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">和
							</font>
						</font><a class="xref" href="partitioning.html#partitioning-list" title="23.2.2列表分区">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第23.2.2节“LIST分区”</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<div class="section">

						<div class="titlepage">
							<div>
								<div>
									<h4 class="title"><a name="partitioning-columns-range"></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">23.2.3.1 RANGE COLUMNS分区</font>
										</font>
									</h4>
								</div>
							</div>
						</div>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									范围列分区与范围分区类似，但允许您使用基于多个列值的范围来定义分区。</font>
								<font style="vertical-align: inherit;">此外，您可以使用除整数类型之外的类型列来定义范围。
								</font>
							</font>
						</p>
						<p>
							<code class="literal">RANGE COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">分区与</font>
							</font><code class="literal">RANGE</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">以下方式的</font>
								<font style="vertical-align: inherit;">分区显着</font>
								<font style="vertical-align: inherit;">不同：
								</font>
							</font>
						</p>
						<div class="itemizedlist">
							<ul class="itemizedlist" style="list-style-type: disc; ">
								<li class="listitem">
									<p>
										<code class="literal">RANGE COLUMNS</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;"> 不接受表达式，只接受列的名称。
											</font>
										</font>
									</p>
								</li>
								<li class="listitem">
									<p>
										<code class="literal">RANGE COLUMNS</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;"> 接受一列或多列。
											</font>
										</font>
									</p>
									<p>
										<code class="literal">RANGE COLUMNS</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">分区基于
											</font>
										</font><span class="firstterm">
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">元组</font>
											</font>
										</span>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">（列值列表）之间的比较，而不是标量值之间的比较。</font>
										</font><code class="literal">RANGE
											COLUMNS</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">分区</font>
											<font style="vertical-align: inherit;">中行的放置</font>
											<font style="vertical-align: inherit;">也基于元组之间的比较; </font>
											<font style="vertical-align: inherit;">这将在本节后面进一步讨论。
											</font>
										</font>
									</p>
								</li>
								<li class="listitem">
									<p>
										<code class="literal">RANGE COLUMNS</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">分区列不限于整数列; </font>
											<font style="vertical-align: inherit;">字符串
											</font>
										</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATE</code></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">和
											</font>
										</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATETIME</code></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">列也可以用作分区列。</font>
											<font style="vertical-align: inherit;">（有关</font>
											<font style="vertical-align: inherit;">详细信息</font>
										</font><a class="xref" href="partitioning.html#partitioning-columns" title="23.2.3列分区">
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">，</font>
											</font>
										</a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">请参见
											</font><a class="xref" href="partitioning.html#partitioning-columns" title="23.2.3列分区">
												<font style="vertical-align: inherit;">第23.2.3节“列分区”</font>
											</a>
											<font style="vertical-align: inherit;">。）
											</font>
										</font>
									</p>
								</li>
							</ul>
						</div>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									创建分区的表的基本语法
								</font>
							</font><code class="literal">RANGE COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">如下所示：
								</font>
							</font>
						</p>
						<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"></font><em class="replaceable"><code>table_name</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
由RANGE COLUMNS（</font></font><em class="replaceable"><code>column_list</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">）</font><font style="vertical-align: inherit;">划分的</font><font style="vertical-align: inherit;">创建表</font><font style="vertical-align: inherit;">（</font><font style="vertical-align: inherit;">）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区</font></font><em class="replaceable"><code>partition_name</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">价值低于（</font></font><em class="replaceable"><code>value_list</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">）[，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区</font></font><em class="replaceable"><code>partition_name</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">价值低于（</font></font><em class="replaceable"><code>value_list</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">）] [，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    ...]</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font>
<font></font>
<em class="replaceable"><code>column_list</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">：
     </font></font><em class="replaceable"><code>column_name</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">[，</font></font><em class="replaceable"><code>column_name</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">] [，...]</font></font><font></font>
<font></font>
<em class="replaceable"><code>value_list</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">：
     </font></font><em class="replaceable"><code>value</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">[，</font></font><em class="replaceable"><code>value</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">] [，...]
</font></font></pre>
						<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">

							<div class="admon-title">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										注意
									</font>
								</font>
							</div>
							<p>
								<font style="vertical-align: inherit;"></font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code
									 class="literal">CREATE TABLE</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">此处显示的</font>
									<font style="vertical-align: inherit;">
										并非</font>
									<font style="vertical-align: inherit;">创建分区表时可以使用的</font>
									<font style="vertical-align: inherit;">所有</font>
									<font style="vertical-align: inherit;">选项。</font>
									<font style="vertical-align: inherit;">有关完整信息，请参见
									</font>
								</font><a class="xref" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第13.1.20节“CREATE TABLE语法”</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</div>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									在刚刚显示的语法中，
								</font>
							</font><em class="replaceable"><code>column_list</code></em>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">是一列或多列（有时称为
								</font>
							</font><span class="firstterm">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">分区列列表</font>
								</font>
							</span>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">），并且</font>
							</font><em class="replaceable"><code>value_list</code></em>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">是值列表（即，它是
								</font>
							</font><span class="firstterm">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">分区定义值列表</font>
								</font>
							</span>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">）。</font>
							</font><em class="replaceable"><code>value_list</code></em>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">必须为每个分区定义提供</font>
								<font style="vertical-align: inherit;">A </font>
								<font style="vertical-align: inherit;">，并且每个分区定义
								</font>
							</font><em class="replaceable"><code>value_list</code></em>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">必须具有与列相同数量的值</font>
							</font><em class="replaceable"><code>column_list</code></em>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									。</font>
								<font style="vertical-align: inherit;">一般来说，如果</font>
							</font><em class="replaceable"><code>N</code></em>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">在</font>
							</font><code class="literal">COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">子句中</font>
								<font style="vertical-align: inherit;">使用
								</font>
								<font style="vertical-align: inherit;">列
								</font>
								<font style="vertical-align: inherit;">，则</font>
							</font><code class="literal">VALUES
								LESS THAN</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">还必须为</font>
								<font style="vertical-align: inherit;">每个</font>
								<font style="vertical-align: inherit;">子句提供</font>
							</font><em class="replaceable"><code>N</code></em>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">值</font>
								<font style="vertical-align: inherit;">列表</font>
								<font style="vertical-align: inherit;">。
								</font>
							</font>
						</p>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									分区列列表和定义每个分区的值列表中的元素必须以相同的顺序出现。</font>
								<font style="vertical-align: inherit;">此外，值列表中的每个元素必须与列列表中的相应元素具有相同的数据类型。</font>
								<font style="vertical-align: inherit;">但是，分区列列表中的列名称和值列表的顺序不必与</font>
							</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
									TABLE</code></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">语句</font>
								<font style="vertical-align: inherit;">主要部分中的表列定义的顺序相同</font>
								<font style="vertical-align: inherit;">。</font>
								<font style="vertical-align: inherit;">与分区的表一样</font>
							</font><code class="literal">RANGE</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，您可以使用</font>
							</font><code class="literal">MAXVALUE</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">表示一个值，以便插入到给定列中的任何合法值始终小于此值。</font>
								<font style="vertical-align: inherit;">这是一个例子
								</font>
							</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
									TABLE</code></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;"> 有助于说明所有这些要点的陈述：
								</font>
							</font>
						</p>
						<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>CREATE TABLE rcx (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>a INT,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>b INT,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>c CHAR(3),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>d INT</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>PARTITION BY RANGE COLUMNS(a,d,c) (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p0 VALUES LESS THAN (5,10,'ggg'),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p1 VALUES LESS THAN (10,20,'mmm'),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p2 VALUES LESS THAN (15,30,'sss'),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p3 VALUES LESS THAN (MAXVALUE,MAXVALUE,MAXVALUE)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;</font></font><strong class="userinput"><code>);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.15秒）</font></font><font></font>
</pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									表</font>
							</font><code class="literal">rcx</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">包含列
								</font>
							</font><code class="literal">a</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，</font>
							</font><code class="literal">b</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，
								</font>
							</font><code class="literal">c</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，</font>
							</font><code class="literal">d</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">。</font>
								<font style="vertical-align: inherit;">供给至分区列列表</font>
							</font><code class="literal">COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">子句使用这些列3中，在顺序</font>
							</font><code class="literal">a</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，
								</font>
							</font><code class="literal">d</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，</font>
							</font><code class="literal">c</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">。</font>
								<font style="vertical-align: inherit;">用于定义分区的每个值列表包含3个相同顺序的值; </font>
								<font style="vertical-align: inherit;">也就是说，每个值列表元组的形式为（</font>
							</font><code class="literal">INT</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，</font>
							</font><code class="literal">INT</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，
								</font>
							</font><code class="literal">CHAR(3)</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">），其对应于由列中使用的数据类型</font>
							</font><code class="literal">a</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，
								</font>
							</font><code class="literal">d</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">和</font>
							</font><code class="literal">c</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">（按该顺序）。
								</font>
							</font>
						</p>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									将行放入分区是通过比较要插入的与该</font>
							</font><code class="literal">COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">子句</font>
								<font style="vertical-align: inherit;">中的列列表匹配的行</font>
								<font style="vertical-align: inherit;">的元组</font>
								<font style="vertical-align: inherit;">与</font>
								<font style="vertical-align: inherit;">子句中使用的元组</font>
							</font><code class="literal">VALUES LESS THAN</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">来定义表的分区来确定的。</font>
								<font style="vertical-align: inherit;">因为我们比较元组（即列表或值集）而不是标量值，所以</font>
							</font><code class="literal">VALUES LESS THAN</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									与</font>
							</font><code class="literal">RANGE COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">分区一起</font>
								<font style="vertical-align: inherit;">使用</font>
								<font style="vertical-align: inherit;">的语义</font>
								<font style="vertical-align: inherit;">与简单</font>
							</font><code class="literal">RANGE</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">分区</font>
								<font style="vertical-align: inherit;">的情况略有不同
								</font>
								<font style="vertical-align: inherit;">。</font>
								<font style="vertical-align: inherit;">在
								</font>
							</font><code class="literal">RANGE</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">分区中，生成表达式值的行等于a中的限制值
								</font>
							</font><code class="literal">VALUES LESS THAN</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">永远不会放在相应的分区中; </font>
								<font style="vertical-align: inherit;">但是，使用时</font>
							</font><code class="literal">RANGE
								COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">在分区时，有时可能是一个行，其分区列列表的第一个元素的值与</font>
							</font><code class="literal">VALUES LESS THAN</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">值列表中</font>
								<font style="vertical-align: inherit;">第一个元素的</font>
								<font style="vertical-align: inherit;">值</font>
								<font style="vertical-align: inherit;">相等，
								</font>
								<font style="vertical-align: inherit;">以放置在相应的分区中。
								</font>
							</font>
						</p>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									考虑</font>
							</font><code class="literal">RANGE</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">此语句创建</font>
								<font style="vertical-align: inherit;">的</font>
								<font style="vertical-align: inherit;">分区表：
								</font>
							</font>
						</p>
						<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE r1（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    一个INT，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    b INT</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
按范围划分（a）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p0值小于（5），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p1值小于（MAXVALUE）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									如果我们在这个表中插入3行，使得</font>
								<font style="vertical-align: inherit;">每一行</font>
								<font style="vertical-align: inherit;">的列值</font>
							</font><code class="literal">a</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">都是</font>
							</font><code class="literal">5</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，那么所有3行都存储在分区中，</font>
							</font><code class="literal">p1</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									因为</font>
							</font><code class="literal">a</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">列值在每种情况下都不小于5，正如我们通过对其执行正确的查询所看到的那样。
								</font>
							</font><a class="link" href="information-schema.html#partitions-table" title="25.17 INFORMATION_SCHEMA PARTITIONS表"><code
								 class="literal">INFORMATION_SCHEMA.PARTITIONS</code></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									表：
								</font>
							</font>
						</p>
						<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>INSERT INTO r1 VALUES (5,10), (5,11), (5,12);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，3行受影响（0.00秒）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
记录：3个重复：0个警告：0</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font></font><strong class="userinput"><code>SELECT PARTITION_NAME,TABLE_ROWS</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>FROM INFORMATION_SCHEMA.PARTITIONS</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>WHERE TABLE_NAME = 'r1';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">PARTITION_NAME | </font><font style="vertical-align: inherit;">TABLE_ROWS |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">3 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
2行（0.00秒）</font></font><font></font>
</pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									现在考虑一个类似的表</font>
							</font><code class="literal">rc1</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，它使用
								</font>
							</font><code class="literal">RANGE COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">两个列的分区</font>
							</font><code class="literal">a</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">并</font>
							</font><code class="literal">b</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									在</font>
							</font><code class="literal">COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">子句中</font>
								<font style="vertical-align: inherit;">引用</font>
								<font style="vertical-align: inherit;">，如下所示创建：
								</font>
							</font>
						</p>
						<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE rc1（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    一个INT，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    b INT</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
按范围栏划分（a，b）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p0值小于（5,12），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p3值小于（MAXVALUE，MAXVALUE）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									如果我们插入一模一样的行成</font>
							</font><code class="literal">rc1</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									，因为我们刚刚插入</font>
							</font><code class="literal">r1</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，行的分布是完全不同的：
								</font>
							</font>
						</p>
						<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>INSERT INTO rc1 VALUES (5,10), (5,11), (5,12);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，3行受影响（0.00秒）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
记录：3个重复：0个警告：0</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font></font><strong class="userinput"><code>SELECT PARTITION_NAME,TABLE_ROWS</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>FROM INFORMATION_SCHEMA.PARTITIONS</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>WHERE TABLE_NAME = 'rc1';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ -------------- + ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">TABLE_SCHEMA | </font><font style="vertical-align: inherit;">PARTITION_NAME | </font><font style="vertical-align: inherit;">TABLE_ROWS |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ -------------- + ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p | </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">2 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p | </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">1 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ -------------- + ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
2行（0.00秒）</font></font><font></font>
</pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									这是因为我们比较行而不是标量值。</font>
								<font style="vertical-align: inherit;">我们可以比较插入的行值和</font>
							</font><code class="literal">VALUES THAN LESS
								THAN</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">用于</font>
							</font><code class="literal">p0</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">在表中</font>
								<font style="vertical-align: inherit;">定义分区</font>
								<font style="vertical-align: inherit;">的</font>
								<font style="vertical-align: inherit;">子句
								</font>
								<font style="vertical-align: inherit;">的限制行值</font>
							</font><code class="literal">rc1</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，如下所示：
								</font>
							</font>
						</p>
						<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>SELECT (5,10) &lt; (5,12), (5,11) &lt; (5,12), (5,12) &lt; (5,12);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ----------------- + ----------------- + ------------- ---- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">（5,10）&lt;（5,12）| </font><font style="vertical-align: inherit;">（5,11）&lt;（5,12）| </font><font style="vertical-align: inherit;">（5,12）&lt;（5,12）|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ----------------- + ----------------- + ------------- ---- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">1 | </font><font style="vertical-align: inherit;">1 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ----------------- + ----------------- + ------------- ---- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
1排（0.00秒）</font></font><font></font>
</pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									2个元组</font>
							</font><code class="literal">(5,10)</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">并且
								</font>
							</font><code class="literal">(5,11)</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">评估为小于
								</font>
							</font><code class="literal">(5,12)</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，因此它们存储在分区中
								</font>
							</font><code class="literal">p0</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">。</font>
								<font style="vertical-align: inherit;">由于5不小于5且12不小于12，</font>
							</font><code class="literal">(5,12)</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">因此认为不小于</font>
							</font><code class="literal">(5,12)</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，并且存储在分区中</font>
							</font><code class="literal">p1</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">。
								</font>
							</font>
						</p>
						<p>
							<font style="vertical-align: inherit;"></font><a class="link" href="sql-syntax.html#select" title="13.2.10 SELECT语法"><code
								 class="literal">SELECT</code></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">前面示例中</font>
								<font style="vertical-align: inherit;">
									的</font>
								<font style="vertical-align: inherit;">语句也可以使用显式行构造函数编写，如下所示：
								</font>
							</font>
						</p>
						<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">选择行（5,10）&lt;行（5,12），行（5,11）&lt;行（5,12），行（5,12）&lt;行（5,12）;
</font></font></pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									有关在MySQL中使用行构造函数的更多信息，请参见</font>
							</font><a class="xref" href="sql-syntax.html#row-subqueries" title="13.2.11.5行子查询">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">第13.2.11.5节“行子查询”</font>
								</font>
							</a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">。
								</font>
							</font>
						</p>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									对于</font>
							</font><code class="literal">RANGE COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									仅使用单个分区列</font>
								<font style="vertical-align: inherit;">分区的表，分区中</font>
								<font style="vertical-align: inherit;">的行的存储与分区的等效表的存储相同</font>
							</font><code class="literal">RANGE</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">。</font>
								<font style="vertical-align: inherit;">以下
								</font>
							</font><code class="literal">CREATE TABLE</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">语句创建</font>
							</font><code class="literal">RANGE COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">使用1分区列</font>
								<font style="vertical-align: inherit;">分区的表</font>
								<font style="vertical-align: inherit;">：
								</font>
							</font>
						</p>
						<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE rx（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    一个INT，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    b INT</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
按范围栏划分（a）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p0值小于（5），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p1值小于（MAXVALUE）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									如果我们插入的行</font>
							</font><code class="literal">(5,10)</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，
								</font>
							</font><code class="literal">(5,11)</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">和</font>
							</font><code class="literal">(5,12)</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">到这个表中，我们可以看到，他们的位置是一样的，因为它是表</font>
							</font><code class="literal">r</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，我们创建和早期填充：
								</font>
							</font>
						</p>
						<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>INSERT INTO rx VALUES (5,10), (5,11), (5,12);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，3行受影响（0.00秒）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
记录：3个重复：0个警告：0</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font></font><strong class="userinput"><code>SELECT PARTITION_NAME,TABLE_ROWS</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>FROM INFORMATION_SCHEMA.PARTITIONS</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>WHERE TABLE_NAME = 'rx';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ -------------- + ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">TABLE_SCHEMA | </font><font style="vertical-align: inherit;">PARTITION_NAME | </font><font style="vertical-align: inherit;">TABLE_ROWS |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ -------------- + ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p | </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p | </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">3 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ -------------- + ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
2行（0.00秒）</font></font><font></font>
</pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									还可以创建分区的表，
								</font>
							</font><code class="literal">RANGE COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">其中在连续的分区定义中重复一列或多列的限制值。</font>
								<font style="vertical-align: inherit;">只要用于定义分区的列值元组严格增加，就可以执行此操作。</font>
								<font style="vertical-align: inherit;">例如，以下每个</font>
							</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
									TABLE</code></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">语句都有效：
								</font>
							</font>
						</p>
						<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE rc2（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    一个INT，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    b INT</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
按范围栏划分（a，b）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p0值小于（0,10），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p1值小于（10,20），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p2值小于（10,30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p3值小于（MAXVALUE，MAXVALUE）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 ）;</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
CREATE TABLE rc3（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    一个INT，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    b INT</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
按范围栏划分（a，b）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p0值小于（0,10），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p1值小于（10,20），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p2值小于（10,30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p3值低于（10,35），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p4值不到（20,40），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p5值小于（MAXVALUE，MAXVALUE）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 ）;</font></font><font></font>
</pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									以下语句也会成功，即使乍一看它也不会成功，因为列的限制值为</font>
							</font><code class="literal">b</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">25表示分区
								</font>
							</font><code class="literal">p0</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，20表示分区
								</font>
							</font><code class="literal">p1</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，列的限制值为
								</font>
							</font><code class="literal">c</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">100表示​​分区
								</font>
							</font><code class="literal">p1</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，50表示分区
								</font>
							</font><code class="literal">p2</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">：
								</font>
							</font>
						</p>
						<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE rc4（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    一个INT，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    b INT，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    c INT</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
按范围栏划分（a，b，c）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p0值小于（0,25,50），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p1值小于（10,20,100），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p2值小于（10,30,50）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p3值小于（MAXVALUE，MAXVALUE，MAXVALUE）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 ）;</font></font><font></font>
</pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									在设计分区的表时</font>
							</font><code class="literal">RANGE
								COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，您始终可以通过使用</font>
							</font><a class="link" href="programs.html#mysql" title="4.5.1 mysql  -  MySQL命令行客户端"><span class="command"><strong>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">mysql</font>
										</font>
									</strong></span></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">客户端</font>
								<font style="vertical-align: inherit;">比较所需的元组来测试连续的分区定义
								</font>
								<font style="vertical-align: inherit;">，如下所示：
								</font>
							</font>
						</p>
						<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>SELECT (0,25,50) &lt; (10,20,100), (10,20,100) &lt; (10,30,50);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------------------- + ----------------------- --- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">（0,25,50）&lt;（10,20,100）| </font><font style="vertical-align: inherit;">（10,20,100）&lt;（10,30,50）|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------------------- + ----------------------- --- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">1 | </font><font style="vertical-align: inherit;">1 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------------------- + ----------------------- --- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
1排（0.00秒）</font></font><font></font>
</pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									如果</font>
							</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
									TABLE</code></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">语句包含的分区定义不是严格按递增顺序排列，则会失败并显示错误，如下例所示：
								</font>
							</font>
						</p>
						<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>CREATE TABLE rcf (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>a INT,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>b INT,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>c INT</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>PARTITION BY RANGE COLUMNS(a,b,c) (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p0 VALUES LESS THAN (0,25,50),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p1 VALUES LESS THAN (20,20,100),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p2 VALUES LESS THAN (10,30,50),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p3 VALUES LESS THAN (MAXVALUE,MAXVALUE,MAXVALUE)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;   </font><span class="errortext"><font style="vertical-align: inherit;">ERROR 1493（HY000）：VALUES值必须严格增加每个分区的值</font></span></font><strong class="userinput"><code>);</code></strong>
<span class="errortext"><font style="vertical-align: inherit;"></font></span>
</pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									当您收到此类错误时，可以通过</font>
								<font style="vertical-align: inherit;">
									在列列表之间</font>
								<font style="vertical-align: inherit;">进行</font>
							</font><span class="quote">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">“ </font>
								</font><span class="quote">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">小于</font>
									</font>
								</span>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;"> ”</font>
								</font>
							</span>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">比较</font>
								<font style="vertical-align: inherit;">来推断出哪些分区定义无效</font>
								<font style="vertical-align: inherit;">。</font>
								<font style="vertical-align: inherit;">在这种情况下，问题在于分区的定义，</font>
							</font><code class="literal">p2</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">因为用于</font>
								<font style="vertical-align: inherit;">定义分区
								</font>
								<font style="vertical-align: inherit;">的元组不小于用于定义分区的元组
								</font>
							</font><code class="literal">p3</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，如下所示：
								</font>
							</font>
						</p>
						<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>SELECT (0,25,50) &lt; (20,20,100), (20,20,100) &lt; (10,30,50);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------------------- + ----------------------- --- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">（0,25,50）&lt;（20,20,100）| </font><font style="vertical-align: inherit;">（20,20,100）&lt;（10,30,50）|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------------------- + ----------------------- --- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">1 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------------------- + ----------------------- --- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
1排（0.00秒）</font></font><font></font>
</pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									使用时，也可以</font>
							</font><code class="literal">MAXVALUE</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">在多个</font>
							</font><code class="literal">VALUES LESS
								THAN</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">子句中</font>
								<font style="vertical-align: inherit;">显示同一列</font>
							</font><code class="literal">RANGE
								COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">。</font>
								<font style="vertical-align: inherit;">但是，连续分区定义中各列的限制值应该增加，应该定义的分区不应超过</font>
							</font><code class="literal">MAXVALUE</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">所有列值的上限，并且此分区定义应出现在</font>
							</font><code class="literal">PARTITION ...
								VALUES LESS THAN</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">子句</font>
								<font style="vertical-align: inherit;">列表的最后</font>
								<font style="vertical-align: inherit;">。</font>
								<font style="vertical-align: inherit;">此外，您不能</font>
							</font><code class="literal">MAXVALUE</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">在多个分区定义中将第一列用作限制值。
								</font>
							</font>
						</p>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									如前所述，</font>
							</font><code class="literal">RANGE
								COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">分区</font>
								<font style="vertical-align: inherit;">也可以</font>
								<font style="vertical-align: inherit;">使用非整数列作为分区列。</font>
								<font style="vertical-align: inherit;">（有关</font>
								<font style="vertical-align: inherit;">这些内容的完整列表，</font>
								<font style="vertical-align: inherit;">请参见
								</font>
							</font><a class="xref" href="partitioning.html#partitioning-columns" title="23.2.3列分区">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">第23.2.3节“列分区”</font>
								</font>
							</a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">。）考虑</font>
							</font><code class="literal">employees</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									使用以下语句创建的</font>
								<font style="vertical-align: inherit;">名为</font>
								<font style="vertical-align: inherit;">（未分区）的表：
								</font>
							</font>
						</p>
						<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE员工（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    fname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    雇用DATE NOT NULL DEFAULT'1970-01-01'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分隔DATE NOT NULL DEFAULT'9999-12-31'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    job_code INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    store_id INT NOT NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									使用</font>
							</font><code class="literal">RANGE COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">分区，您可以创建此表的一个版本，根据员工的姓氏将每行存储在四个分区之一中，如下所示：
								</font>
							</font>
						</p>
						<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE employees_by_lname（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    fname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    雇用DATE NOT NULL DEFAULT'1970-01-01'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分隔DATE NOT NULL DEFAULT'9999-12-31'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    job_code INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    store_id INT NOT NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
按栏分区（lname）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p0值小于（'g'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p1值小于（'m'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p2值小于（'t'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p3值小于（MAXVALUE）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									或者，您可以</font>
							</font><code class="literal">employees</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">通过执行以下</font>
							</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
								 class="literal">ALTER
									TABLE</code></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">语句，</font>
								<font style="vertical-align: inherit;">使用此方案对先前创建</font>
								<font style="vertical-align: inherit;">的
								</font>
								<font style="vertical-align: inherit;">表进行分区
								</font>
								<font style="vertical-align: inherit;">：
								</font>
							</font>
						</p>
						<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">ALTER TABLE员工按范围列分区（lname）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p0值小于（'g'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p1值小于（'m'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p2值小于（'t'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p3值小于（MAXVALUE）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
						<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">

							<div class="admon-title">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										注意
									</font>
								</font>
							</div>
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										由于不同的字符集和排序规则具有不同的排序顺序，因此</font>
								</font><code class="literal">RANGE COLUMNS</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">当使用字符串列作为分区列时，使用</font>
									<font style="vertical-align: inherit;">的字符集和排序规则可能会影响由</font>
									<font style="vertical-align: inherit;">给定行</font>
									<font style="vertical-align: inherit;">分区的表的哪个分区
									</font>
									<font style="vertical-align: inherit;">。</font>
									<font style="vertical-align: inherit;">此外，在创建此类表之后更改给定数据库，表或列的字符集或排序规则可能会导致更改行的分布方式。</font>
									<font style="vertical-align: inherit;">例如，在使用区分大小写的排序规则时，
									</font>
								</font><code class="literal">'and'</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">请先排序
									</font>
								</font><code class="literal">'Andersen'</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，但在使用不区分大小写的排序规则时，反之亦然。
									</font>
								</font>
							</p>
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										有关MySQL如何处理字符集和排序规则的信息，请参阅</font>
								</font><a class="xref" href="charset.html" title="第10章字符集，排序规则，Unicode">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第10章，</font>
									</font><i>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">字符集，排序规则，Unicode</font>
										</font>
									</i>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</div>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									类似地，您可以使</font>
							</font><code class="literal">employees</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									表格按照以下方式进行分区：基于使用</font>
							</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
								 class="literal">ALTER
									TABLE</code></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">此处显示</font>
								<font style="vertical-align: inherit;">的</font>
								<font style="vertical-align: inherit;">语句</font>
								<font style="vertical-align: inherit;">雇用相应员工的十年，每行存储在多个分区之一中
								</font>
								<font style="vertical-align: inherit;">：
								</font>
							</font>
						</p>
						<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">ALTER TABLE员工按范围列分区（租用）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p0值不到（'1970-01-01'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p1值低于（'1980-01-01'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p2值低于（'1990-01-01'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p3价值低于（'2000-01-01'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p4价值低于（'2010-01-01'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p5值小于（MAXVALUE）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									有关</font>
							</font><a class="xref" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">语法</font>
								</font>
							</a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">的其他信息</font><a class="xref" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法">
									<font style="vertical-align: inherit;">，</font>
								</a>
								<font style="vertical-align: inherit;">请参见</font><a class="xref" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法">
									<font style="vertical-align: inherit;">第13.1.20节“CREATE TABLE语法”</font>
								</a>
							</font><code class="literal">PARTITION BY RANGE COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">。
								</font>
							</font>
						</p>
					</div>
					<div class="section">
						<div class="titlepage">
							<div>
								<div>
									<h4 class="title"><a name="partitioning-columns-list"></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">23.2.3.2列表列分区</font>
										</font>
									</h4>

								</div>

							</div>

						</div>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									MySQL 8.0提供了对</font>
							</font><code class="literal">LIST
								COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">分区的</font>
								<font style="vertical-align: inherit;">支持</font>
								<font style="vertical-align: inherit;">。</font>
								<font style="vertical-align: inherit;">这是</font>
							</font><code class="literal">LIST</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">分区的</font>
								<font style="vertical-align: inherit;">一种变体，
								</font>
								<font style="vertical-align: inherit;">它允许使用多个列作为分区键，并将整数类型以外的数据类型列用作分区列; </font>
								<font style="vertical-align: inherit;">您可以使用字符串类型
								</font>
							</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATE</code></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">和
								</font>
							</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATETIME</code></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">列。</font>
								<font style="vertical-align: inherit;">（有关</font>
							</font><code class="literal">COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">分区列的</font>
								<font style="vertical-align: inherit;">允许数据类型的更多信息
								</font>
								<font style="vertical-align: inherit;">，请参见</font>
							</font><a class="xref" href="partitioning.html#partitioning-columns" title="23.2.3列分区">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">第23.2.3节“</font>
								</font>
							</a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">列
								</font><a class="xref" href="partitioning.html#partitioning-columns" title="23.2.3列分区">
									<font style="vertical-align: inherit;">分区”</font>
								</a>
								<font style="vertical-align: inherit;">。）
								</font>
							</font>
						</p>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									假设您的业务在12个城市拥有客户，出于销售和营销目的，您将组织到3个城市的4个区域，如下表所示：
								</font>
							</font>
						</p>
						<div class="informaltable">
							<table summary="The example described in the preceding text of a business with four sales and marketing regions, with each region having three cities.">
								<colgroup>
									<col width="50%">
									<col width="50%">
								</colgroup>
								<thead>
									<tr>
										<th scope="col">
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">区域</font>
											</font>
										</th>
										<th scope="col">
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">城市</font>
											</font>
										</th>
									</tr>
								</thead>
								<tbody>
									<tr>
										<td scope="row">
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">1</font>
											</font>
										</td>
										<td>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">Oskarshamn，Högsby，Mönsterås</font>
											</font>
										</td>
									</tr>
									<tr>
										<td scope="row">
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">2</font>
											</font>
										</td>
										<td>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">Vimmerby，Hultsfred，Västervik</font>
											</font>
										</td>
									</tr>
									<tr>
										<td scope="row">
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">3</font>
											</font>
										</td>
										<td>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">Nässjö，Eksjö，Vetlanda</font>
											</font>
										</td>
									</tr>
									<tr>
										<td scope="row">
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">4</font>
											</font>
										</td>
										<td>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">Uppvidinge，Alvesta，Växjo</font>
											</font>
										</td>
									</tr>
								</tbody>
							</table>
						</div>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									通过</font>
							</font><code class="literal">LIST COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">分区，您可以为客户数据创建一个表，该表根据客户所在城市的名称将行分配给与这些区域对应的4个分区中的任何一个，如下所示：
								</font>
							</font>
						</p>
						<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE customers_1（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    first_name VARCHAR（25），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    last_name VARCHAR（25），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    street_1 VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    street_2 VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    city VARCHAR（15），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    更新日期</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
列表栏（城市）划分（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARAGETION pRegion_1 VALUES IN（'Oskarshamn'，'Högsby'，'Mönsterås'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION pRegion_2 VALUES IN（'Vimmerby'，'Hultsfred'，'Västervik'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION pRegion_3 VALUES IN（'Nässjö'，'Eksjö'，'Vetlanda'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION pRegion_4 VALUES IN（'Uppvidinge'，'Alvesta'，'Växjo'）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									与分区依据一样</font>
							</font><code class="literal">RANGE COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，您不需要在</font>
							</font><code class="literal">COLUMNS()</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">子句中</font>
								<font style="vertical-align: inherit;">使用表达式
								</font>
								<font style="vertical-align: inherit;">将列值转换为整数。</font>
								<font style="vertical-align: inherit;">（事实上​​，不允许使用除列名以外的表达式
								</font>
							</font><code class="literal">COLUMNS()</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">。）
								</font>
							</font>
						</p>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									也可以使用</font>
							</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATE</code></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									和</font>
							</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATETIME</code></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">列，如以下示例所示，它使用与</font>
							</font><code class="literal">customers_1</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">前面所示</font>
								<font style="vertical-align: inherit;">的</font>
								<font style="vertical-align: inherit;">表</font>
								<font style="vertical-align: inherit;">相同的名称和列</font>
								<font style="vertical-align: inherit;">，但使用</font>
							</font><code class="literal">LIST COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">基于</font>
							</font><code class="literal">renewal</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">列的</font>
								<font style="vertical-align: inherit;">分区</font>
								<font style="vertical-align: inherit;">将行存储在4个分区之一中，具体取决于2010年2月的一周客户的帐户计划续订：
								</font>
							</font>
						</p>
						<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE customers_2（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    first_name VARCHAR（25），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    last_name VARCHAR（25），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    street_1 VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    street_2 VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    city VARCHAR（15），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    更新日期</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
列表栏划分（续期）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION pWeek_1 VALUES IN（'2010-02-01'，'2010-02-02'，'2010-02-03'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        '2010-02-04'，'2010-02-05'，'2010-02-06'，'2010-02-07'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION pWeek_2 VALUES IN（'2010-02-08'，'2010-02-09'，'2010-02-10'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        '2010-02-11'，'2010-02-12'，'2010-02-13'，'2010-02-14'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION pWeek_3 VALUES IN（'2010-02-15'，'2010-02-16'，'2010-02-17'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        '2010-02-18'，'2010-02-19'，'2010-02-20'，'2010-02-21'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION pWeek_4 VALUES IN（'2010-02-22'，'2010-02-23'，'2010-02-24'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        '2010-02-25'，'2010-02-26'，'2010-02-27'，'2010-02-28'）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									这有效，但如果涉及的日期数量变得非常大，则定义和维护变得很麻烦; </font>
								<font style="vertical-align: inherit;">在这种情况下，采用</font>
							</font><code class="literal">RANGE</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">或</font>
							</font><code class="literal">RANGE COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									分割</font>
								<font style="vertical-align: inherit;">通常更为实际
								</font>
								<font style="vertical-align: inherit;">。</font>
								<font style="vertical-align: inherit;">在这种情况下，由于我们希望用作分区键的</font>
							</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATE</code></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">列</font>
								<font style="vertical-align: inherit;">是
								</font>
								<font style="vertical-align: inherit;">列，我们使用
								</font>
							</font><code class="literal">RANGE COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">分区，如下所示：
								</font>
							</font>
						</p>
						<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE customers_3（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    first_name VARCHAR（25），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    last_name VARCHAR（25），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    street_1 VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    street_2 VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    city VARCHAR（15），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    更新日期</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
按范围栏划分（续期）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分数pWeek_1的价值低于（'2010-02-09'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分数pWeek_2的价值低于（'2010-02-15'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分数pWeek_3价值低于（'2010-02-22'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分数pWeek_4价值低于（'2010-03-01'）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									有关</font>
								<font style="vertical-align: inherit;">更多信息</font>
							</font><a class="xref" href="partitioning.html#partitioning-columns-range" title="23.2.3.1 RANGE COLUMNS分区">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，</font>
								</font>
							</a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">请参见</font><a class="xref" href="partitioning.html#partitioning-columns-range"
								 title="23.2.3.1 RANGE COLUMNS分区">
									<font style="vertical-align: inherit;">第23.2.3.1节“RANGE COLUMNS分区”</font>
								</a>
								<font style="vertical-align: inherit;">。
								</font>
							</font>
						</p>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									此外（与</font>
							</font><code class="literal">RANGE COLUMNS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									分区一样），您可以在</font>
							</font><code class="literal">COLUMNS()</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">子句中</font>
								<font style="vertical-align: inherit;">使用多个列
								</font>
								<font style="vertical-align: inherit;">。
								</font>
							</font>
						</p>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									有关</font>
							</font><a class="xref" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">语法</font>
								</font>
							</a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">的其他信息</font><a class="xref" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法">
									<font style="vertical-align: inherit;">，</font>
								</a>
								<font style="vertical-align: inherit;">请参见</font><a class="xref" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法">
									<font style="vertical-align: inherit;">第13.1.20节“CREATE TABLE语法”</font>
								</a>
							</font><code class="literal">PARTITION BY LIST COLUMNS()</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">。
								</font>
							</font>
						</p>
					</div>

				</div>
				<div class="section">
					<div class="titlepage">
						<div>
							<div>
								<h3 class="title"><a name="partitioning-hash"></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.2.4 HASH分区</font>
									</font>
								</h3>

							</div>

						</div>

					</div>
					<div class="toc">
						<dl class="toc"><dt><span class="section"><a href="partitioning.html#partitioning-linear-hash">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">23.2.4.1线性哈希分区</font>
										</font>
									</a></span></dt></dl>
					</div>
					<a class="indexterm" name="idm140091573786912"></a><a class="indexterm" name="idm140091573785424"></a>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								分区</font>
						</font><code class="literal">HASH</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">主要用于确保在预定数量的分区之间均匀分布数据。</font>
							<font style="vertical-align: inherit;">使用范围或列表分区时，必须明确指定应存储给定列值或列值的哪个分区; </font>
							<font style="vertical-align: inherit;">通过散列分区，您可以自行决定此决策，并且只需要根据要散列的列值和分区表要分区的分区数指定列值或表达式。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								要使用分区对表进行</font>
						</font><code class="literal">HASH</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区，必须在</font>
						</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句后</font>
							<font style="vertical-align: inherit;">附加</font>
							<font style="vertical-align: inherit;">一个</font>
							<font style="vertical-align: inherit;">子句，其中
							</font>
							<font style="vertical-align: inherit;">是一个返回整数的表达式。</font>
							<font style="vertical-align: inherit;">这可以只是列的名称，其类型是MySQL的整数类型之一。</font>
							<font style="vertical-align: inherit;">此外，您最有可能想要使用</font>
							<font style="vertical-align: inherit;">，其中
							</font>
							<font style="vertical-align: inherit;">是一个正整数，表示要将表分成的分区数。
							</font>
						</font><code class="literal">PARTITION BY HASH
							(<em class="replaceable"><code>expr</code></em>)</code>
						<font style="vertical-align: inherit;"></font><em class="replaceable"><code>expr</code></em>
						<font style="vertical-align: inherit;"></font><code class="literal">PARTITIONS
							<em class="replaceable"><code>num</code></em></code>
						<font style="vertical-align: inherit;"></font><em class="replaceable"><code>num</code></em>
						<font style="vertical-align: inherit;"></font>
					</p>
					<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">

						<div class="admon-title">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									注意
								</font>
							</font>
						</div>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									为简单起见，以下示例中的表不使用任何键。</font>
								<font style="vertical-align: inherit;">您应该知道，如果表具有任何唯一键，则此表的分区表达式中使用的每个列都必须是每个唯一键的一部分，包括主键。</font>
								<font style="vertical-align: inherit;">有关</font>
								<font style="vertical-align: inherit;">更多信息</font>
							</font><a class="xref" href="partitioning.html#partitioning-limitations-partitioning-keys-unique-keys" title="23.6.1对密钥，主密钥和唯一密钥进行分区">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，</font>
								</font>
							</a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">请参见
								</font><a class="xref" href="partitioning.html#partitioning-limitations-partitioning-keys-unique-keys" title="23.6.1对密钥，主密钥和唯一密钥进行分区">
									<font style="vertical-align: inherit;">第23.6.1节“对键，主键和唯一键进行分区”</font>
								</a>
								<font style="vertical-align: inherit;">。
								</font>
							</font>
						</p>
					</div>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								以下语句创建一个在</font>
						</font><code class="literal">store_id</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">列</font>
							<font style="vertical-align: inherit;">上使用散列的表，
							</font>
							<font style="vertical-align: inherit;">并分为4个分区：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE员工（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    fname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    雇用DATE NOT NULL DEFAULT'1970-01-01'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分隔DATE NOT NULL DEFAULT'9999-12-31'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    job_code INT，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    store_id INT</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARASHTION by HASH（store_id）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITIONS 4;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								如果不包含</font>
						</font><code class="literal">PARTITIONS</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">子句，则分区数默认为</font>
						</font><code class="literal">1</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">; </font>
							<font style="vertical-align: inherit;">使用</font>
						</font><code class="literal">PARTITIONS</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">后面没有数字</font>
							<font style="vertical-align: inherit;">的</font>
							<font style="vertical-align: inherit;">关键字会导致语法错误。
							</font>
						</font>
					</p><a class="indexterm" name="idm140091573769984"></a>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								您还可以使用返回整数的SQL表达式
							</font>
						</font><em class="replaceable"><code>expr</code></em>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">例如，您可能希望根据雇用员工的年份进行分区。</font>
							<font style="vertical-align: inherit;">这可以如下所示完成：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE员工（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    fname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    雇用DATE NOT NULL DEFAULT'1970-01-01'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分隔DATE NOT NULL DEFAULT'9999-12-31'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    job_code INT，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    store_id INT</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
哈希分居（年（雇用））</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITIONS 4;</font></font><font></font>
</pre>
					<p>
						<em class="replaceable"><code>expr</code></em>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">必须返回非常量非随机整数值（换句话说，它应该是变化的但是确定性的），并且不得包含</font>
						</font><a class="xref" href="partitioning.html#partitioning-limitations" title="23.6分区的限制和限制">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第23.6节“分区的限制和限制”中</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">所述的任何禁止的构造
							</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">您还应该记住，每次插入或更新（或可能删除）行时都会评估此表达式; </font>
							<font style="vertical-align: inherit;">这意味着非常复杂的表达式可能会导致性能问题，尤其是在执行一次影响大量行的操作（例如批量插入）时。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								最有效的散列函数是在单个表列上操作的函数，其值随列值一致地增加或减少，因为这允许
							</font>
							<font style="vertical-align: inherit;">在分区范围上</font>
						</font><span class="quote">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">“ </font>
							</font><span class="quote">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">修剪</font>
								</font>
							</span>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;"> ”</font>
							</font>
						</span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">也就是说，表达式越接近它所基于的列的值，MySQL就越有效地使用表达式进行散列分区。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								例如，where </font>
						</font><code class="literal">date_col</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">是一个类型的列</font>
						</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，然后表达式
							</font>
						</font><a class="link" href="functions.html#function_to-days"><code class="literal">TO_DAYS(date_col)</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">直接与值的</font>
						</font><code class="literal">date_col</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">变化，因为对于</font>
							<font style="vertical-align: inherit;">值的</font>
							<font style="vertical-align: inherit;">每个变化，</font>
						</font><code class="literal">date_col</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">表达式的值以一致的方式变化。</font>
							<font style="vertical-align: inherit;">表达式</font>
						</font><a class="link" href="functions.html#function_year"><code class="literal">YEAR(date_col)</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">相对于
							</font>
							<font style="vertical-align: inherit;">的方差
							</font>
						</font><code class="literal">date_col</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">并不像那样直接
							</font>
						</font><a class="link" href="functions.html#function_to-days"><code class="literal">TO_DAYS(date_col)</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，因为并非所有可能的变化都会</font>
						</font><code class="literal">date_col</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">产生相应的变化
							</font>
						</font><a class="link" href="functions.html#function_year"><code class="literal">YEAR(date_col)</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">即使这样，
							</font>
						</font><a class="link" href="functions.html#function_year"><code class="literal">YEAR(date_col)</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">也是散列函数的一个很好的候选者，因为它直接与一部分有所不同，</font>
						</font><code class="literal">date_col</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">并且没有可能的变化</font>
						</font><code class="literal">date_col</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">这会产生不成比例的变化
							</font>
						</font><a class="link" href="functions.html#function_year"><code class="literal">YEAR(date_col)</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								相比之下，假设您有一个名为</font>
						</font><code class="literal">int_col</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">其类型
							</font>
							<font style="vertical-align: inherit;">的列
							</font>
						</font><a class="link" href="data-types.html#integer-types" title="11.2.1整数类型（精确值） -  INTEGER，INT，SMALLINT，TINYINT，MEDIUMINT，BIGINT"><code
							 class="literal">INT</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">现在考虑表达式
							</font>
						</font><a class="link" href="functions.html#function_pow"><code class="literal">POW(5-int_col,3) + 6</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">这对于散列函数来说是一个糟糕的选择，因为值的变化</font>
						</font><code class="literal">int_col</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">不能保证表达式值的比例变化。</font>
							<font style="vertical-align: inherit;">改变的值</font>
						</font><code class="literal">int_col</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">由给定的量可以产生在表达式的值差异很大的变化。</font>
							<font style="vertical-align: inherit;">例如，改变</font>
						</font><code class="literal">int_col</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">从
							</font>
						</font><code class="literal">5</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">对</font>
						</font><code class="literal">6</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">产生的变化</font>
						</font><code class="literal">-1</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">表达式的值，但改变的值</font>
						</font><code class="literal">int_col</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，从
							</font>
						</font><code class="literal">6</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">对</font>
						</font><code class="literal">7</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">产生的变化</font>
						</font><code class="literal">-7</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;"> 在表达式中。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								换句话说，列值与表达式值的关系曲线越接近直线，如等式所示
							</font>
							<font style="vertical-align: inherit;">，其中
							</font>
							<font style="vertical-align: inherit;">某些非零常数，表达式适合散列越好。</font>
							<font style="vertical-align: inherit;">这与表达式越非线性的事实有关，它倾向于产生的分区之间的数据分布越不均匀。
							</font>
						</font><code class="literal">y=<em class="replaceable"><code>c</code></em>x</code>
						<font style="vertical-align: inherit;"></font><em class="replaceable"><code>c</code></em>
						<font style="vertical-align: inherit;"></font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								理论上，对于涉及多个列值的表达式，修剪也是可能的，但是确定哪个表达式是合适的可能是非常困难和耗时的。</font>
							<font style="vertical-align: inherit;">因此，不特别推荐使用涉及多列的散列表达式。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								当</font>
						</font><code class="literal">PARTITION BY HASH</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">被使用时，存储引擎确定哪个分区
							</font>
						</font><em class="replaceable"><code>num</code></em>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区使用基于表达式的结果的模量。</font>
							<font style="vertical-align: inherit;">换句话说，对于给定的表达式</font>
						</font><em class="replaceable"><code>expr</code></em>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，存储记录的分区是分区号
							</font>
						</font><em class="replaceable"><code>N</code></em>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，其中
							</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">假设该表
							</font>
							<font style="vertical-align: inherit;">定义如下，因此它有4个分区：
							</font>
						</font><code class="literal"><em class="replaceable"><code>N</code></em> =
							MOD(<em class="replaceable"><code>expr</code></em>,
							<em class="replaceable"><code>num</code></em>)</code>
						<font style="vertical-align: inherit;"></font><code class="literal">t1</code>
						<font style="vertical-align: inherit;"></font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE t1（col1 INT，col2 CHAR（5），col3 DATE）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    哈希分区（年份（col3））</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITIONS 4;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								如果您在</font>
						</font><code class="literal">t1</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">其
							</font>
						</font><code class="literal">col3</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">值中
							</font>
							<font style="vertical-align: inherit;">插入记录</font>
						</font><code class="literal">'2005-09-15'</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，则存储它的分区将按如下方式确定：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MOD（YEAR（ '2005-09-01'），4）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
= MOD（2005,4）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
= 1</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								MySQL 8.0还支持</font>
						</font><code class="literal">HASH</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">称为</font>
						</font><span class="firstterm">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">线性散列</font>
							</font>
						</span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">的</font>
							<font style="vertical-align: inherit;">分区
							</font>
							<font style="vertical-align: inherit;">变体，
							</font>
							<font style="vertical-align: inherit;">它使用更复杂的算法来确定插入分区表中的新行的位置。</font>
							<font style="vertical-align: inherit;">有关</font>
							<font style="vertical-align: inherit;">此算法的说明，</font>
							<font style="vertical-align: inherit;">请参见
							</font>
						</font><a class="xref" href="partitioning.html#partitioning-linear-hash" title="23.2.4.1线性哈希分区">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第23.2.4.1节“线性哈希分区”</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								每次插入或更新记录时，都会评估用户提供的表达式。</font>
							<font style="vertical-align: inherit;">它也可能 - 取决于具体情况 - 在删除记录时进行评估。
							</font>
						</font>
					</p>
					<div class="section">

						<div class="titlepage">
							<div>
								<div>
									<h4 class="title"><a name="partitioning-linear-hash"></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">23.2.4.1线性哈希分区</font>
										</font>
									</h4>
								</div>
							</div>
						</div>
						<a class="indexterm" name="idm140091573719632"></a><a class="indexterm" name="idm140091573718144"></a>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									MySQL还支持线性散列，它不同于常规散列，因为线性散列使用线性二次幂算法，而常规散列使用散列函数值的模数。
								</font>
							</font>
						</p>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									从语法上讲，线性散列分区和常规散列之间的唯一区别是</font>
							</font><code class="literal">LINEAR</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">在</font>
							</font><code class="literal">PARTITION
								BY</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">子句中</font>
								<font style="vertical-align: inherit;">添加了
								</font>
								<font style="vertical-align: inherit;">关键字</font>
								<font style="vertical-align: inherit;">，如下所示：
								</font>
							</font>
						</p>
						<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE员工（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    fname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    雇用DATE NOT NULL DEFAULT'1970-01-01'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分隔DATE NOT NULL DEFAULT'9999-12-31'，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    job_code INT，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    store_id INT</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
线性哈希分区（年（雇用））</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITIONS 4;</font></font><font></font>
</pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									给出的表达式</font>
							</font><em class="replaceable"><code>expr</code></em>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，其中，所述记录被存储在使用线性散列分区是分区号</font>
							</font><em class="replaceable"><code>N</code></em>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">从间</font>
							</font><em class="replaceable"><code>num</code></em>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">隔板，其中
								</font>
							</font><em class="replaceable"><code>N</code></em>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，根据以下算法导出：
								</font>
							</font>
						</p>
						<div class="orderedlist">
							<ol class="orderedlist" type="1">
								<li class="listitem">
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												找到大于2的下一个幂
											</font>
										</font><em class="replaceable"><code>num</code></em>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">。</font>
											<font style="vertical-align: inherit;">我们称之为这个价值
											</font>
										</font><em class="replaceable"><code>V</code></em>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">; </font>
											<font style="vertical-align: inherit;">它可以计算为：
											</font>
										</font>
									</p>
									<pre data-lang="simple" class="programlisting"><em class="replaceable"><code>V</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">= POWER（2，CEILING（LOG（2，</font></font><em class="replaceable"><code>num</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">）））
</font></font></pre>
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												（假设</font>
										</font><em class="replaceable"><code>num</code></em>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">是13.然后
											</font>
										</font><a class="link" href="functions.html#function_log"><code class="literal">LOG(2,13)</code></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">是3.7004397181411。
											</font>
										</font><a class="link" href="functions.html#function_ceiling"><code class="literal">CEILING(3.7004397181411)</code></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">是4，和</font>
										</font><em class="replaceable"><code>V</code></em>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">=
											</font>
										</font><a class="link" href="functions.html#function_power"><code class="literal">POWER(2,4)</code></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">，这是16）
											</font>
										</font>
									</p>
								</li>
								<li class="listitem">
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												设置</font>
										</font><em class="replaceable"><code>N</code></em>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">=
											</font>
										</font><em class="replaceable"><code>F</code></em>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">（</font>
										</font><em class="replaceable"><code>column_list</code></em>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">）＆（</font>
										</font><em class="replaceable"><code>V</code></em>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">- 1）。
											</font>
										</font>
									</p>
								</li>
								<li class="listitem">
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												而</font>
										</font><em class="replaceable"><code>N</code></em>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">&gt; =
											</font>
										</font><em class="replaceable"><code>num</code></em>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">：
											</font>
										</font>
									</p>
									<div class="itemizedlist">
										<ul class="itemizedlist" style="list-style-type: disc; ">
											<li class="listitem">
												<p>
													<font style="vertical-align: inherit;">
														<font style="vertical-align: inherit;">
															设置</font>
													</font><em class="replaceable"><code>V</code></em>
													<font style="vertical-align: inherit;">
														<font style="vertical-align: inherit;">=
														</font>
													</font><em class="replaceable"><code>V</code></em>
													<font style="vertical-align: inherit;">
														<font style="vertical-align: inherit;">/ 2
														</font>
													</font>
												</p>
											</li>
											<li class="listitem">
												<p>
													<font style="vertical-align: inherit;">
														<font style="vertical-align: inherit;">
															设置</font>
													</font><em class="replaceable"><code>N</code></em>
													<font style="vertical-align: inherit;">
														<font style="vertical-align: inherit;">=
														</font>
													</font><em class="replaceable"><code>N</code></em>
													<font style="vertical-align: inherit;">
														<font style="vertical-align: inherit;">＆（</font>
													</font><em class="replaceable"><code>V</code></em>
													<font style="vertical-align: inherit;">
														<font style="vertical-align: inherit;">- 1）
														</font>
													</font>
												</p>
											</li>
										</ul>
									</div>
								</li>
							</ol>
						</div>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									假设</font>
							</font><code class="literal">t1</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">使用此语句创建使用线性哈希分区并具有6个分区的表：
								</font>
							</font>
						</p>
						<pre data-lang="simple" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE t1（col1 INT，col2 CHAR（5），col3 DATE）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    线性哈希分区（年份（col3））</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分数6;</font></font><font></font>
</pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									现在假设您要将两个记录插入到
								</font>
							</font><code class="literal">t1</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">具有</font>
							</font><code class="literal">col3</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									列值</font>
							</font><code class="literal">'2003-04-14'</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">和
								</font>
							</font><code class="literal">'1998-10-19'</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">。</font>
								<font style="vertical-align: inherit;">第一个的分区号确定如下：
								</font>
							</font>
						</p>
						<pre data-lang="simple" class="programlisting"><em class="replaceable"><code>V</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">= POWER（2，CEILING（LOG（2,6）））= 8
 </font></font><em class="replaceable"><code>N</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">=年（'2003-04-14'）和（8-1）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
   = 2003＆7</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
   = 3</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
（</font></font><span class="emphasis"><em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">3&gt; = 6为FALSE：记录存储在分区＃3中</font></font></em></span><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">）
</font></font></pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									存储第二条记录的分区数量如下所示：
								</font>
							</font>
						</p>
						<pre data-lang="simple" class="programlisting"><em class="replaceable"><code>V</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">= 8
 </font></font><em class="replaceable"><code>N</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">=年（'1998-10-19'）和（8-1）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  = 1998年和7年</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  = 6</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
（</font></font><span class="emphasis"><em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">6&gt; = 6为TRUE：需要额外步骤</font></font></em></span><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">）</font></font><font></font>
<font></font>
<em class="replaceable"><code>N</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> = 6＆（（8/2） -  1）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  = 6＆3</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  = 2</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
（</font></font><span class="emphasis"><em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">2&gt; = 6为FALSE：记录存储在分区＃2中</font></font></em></span><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">）
</font></font></pre>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									线性哈希分区的优点是分区的添加，删除，合并和拆分要快得多，这在处理包含极大量（兆兆字节）数据的表时非常有用。</font>
								<font style="vertical-align: inherit;">缺点是与使用常规散列分区获得的分布相比，数据不太可能在分区之间均匀分布。
								</font>
							</font>
						</p>
					</div>

				</div>
				<div class="section">
					<div class="titlepage">
						<div>
							<div>
								<h3 class="title"><a name="partitioning-key"></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.2.5密钥分区</font>
									</font>
								</h3>

							</div>

						</div>

					</div>
					<a class="indexterm" name="idm140091573679056"></a><a class="indexterm" name="idm140091573677568"></a>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								按密钥分区类似于通过散列进行分区，除了散列分区采用用户定义的表达式之外，密钥分区的散列函数由MySQL服务器提供。</font>
							<font style="vertical-align: inherit;">NDB Cluster
							</font>
						</font><a class="link" href="functions.html#function_md5"><code class="literal">MD5()</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">用于此目的; </font>
							<font style="vertical-align: inherit;">对于使用其他存储引擎的表，服务器使用自己的内部散列函数，该函数基于与之相同的算法</font>
						</font><a class="link" href="functions.html#function_password"><code class="literal">PASSWORD()</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								语法规则</font>
						</font><code class="literal">CREATE TABLE ... PARTITION BY
							KEY</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">类似于创建由哈希分区的表的</font>
							<font style="vertical-align: inherit;">规则</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">这里列出了主要差异：
							</font>
						</font>
					</p>
					<div class="itemizedlist">
						<ul class="itemizedlist" style="list-style-type: disc; ">
							<li class="listitem">
								<p>
									<code class="literal">KEY</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">使用而不是
										</font>
									</font><code class="literal">HASH</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<code class="literal">KEY</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">仅获取零个或多个列名称的列表。</font>
										<font style="vertical-align: inherit;">用作分区键的任何列必须包含表的主键的部分或全部，如果表有一个。</font>
										<font style="vertical-align: inherit;">如果没有将列名指定为分区键，则使用表的主键（如果有）。</font>
										<font style="vertical-align: inherit;">例如，以下
										</font>
									</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
											TABLE</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">语句在MySQL 8.0中有效：
										</font>
									</font>
								</p>
								<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">创建表k1（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NOT PRIMARY KEY，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    名称VARCHAR（20）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITION BY KEY（）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITIONS 2;</font></font><font></font>
</pre>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											如果没有主键但有唯一键，则唯一键用于分区键：
										</font>
									</font>
								</p>
								<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">创建表k1（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    名称VARCHAR（20），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    独特的钥匙（id）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITION BY KEY（）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITIONS 2;</font></font><font></font>
</pre>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											但是，如果未将唯一键列定义为
										</font>
									</font><code class="literal">NOT NULL</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">，则前一个语句将失败。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											在这两种情况下，分区键都是
										</font>
									</font><code class="literal">id</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">列，即使它未显示在表的输出</font>
									</font><a class="link" href="sql-syntax.html#show-create-table" title="13.7.6.10 SHOW CREATE TABLE语法"><code
										 class="literal">SHOW CREATE
											TABLE</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">或
										</font>
									</font><code class="literal">PARTITION_EXPRESSION</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">列中
										</font>
									</font><a class="link" href="information-schema.html#partitions-table" title="25.17 INFORMATION_SCHEMA PARTITIONS表"><code
										 class="literal">INFORMATION_SCHEMA.PARTITIONS</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											与其他分区类型的情况不同，用于分区的列</font>
									</font><code class="literal">KEY</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">不限于整数或</font>
									</font><code class="literal">NULL</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">值。</font>
										<font style="vertical-align: inherit;">例如，以下</font>
									</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
											TABLE</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">语句有效：
										</font>
									</font>
								</p>
								<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE tm1（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    s1 CHAR（32）PRIMARY KEY</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
按键分区（s1）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
分数10;</font></font><font></font>
</pre>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											前面的语句将</font>
									</font><span class="emphasis"><em>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">不会</font>
											</font>
										</em></span>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">是有效的，将被指定不同的分区类型。</font>
										<font style="vertical-align: inherit;">（在这种情况下，简单地使用</font>
									</font><code class="literal">PARTITION BY
										KEY()</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">也是有效的，并且具有相同的效果</font>
									</font><code class="literal">PARTITION BY KEY(s1)</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">，因为
										</font>
									</font><code class="literal">s1</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">是表的主键。）
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											有关此问题的其他信息，请参见
										</font>
									</font><a class="xref" href="partitioning.html#partitioning-limitations" title="23.6分区的限制和限制">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">第23.6节“分区的限制和限制”</font>
										</font>
									</a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">。
										</font>
									</font>
								</p>
								<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">

									<div class="admon-title">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												注意
											</font>
										</font>
									</div>
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												使用</font>
										</font><a class="link" href="mysql-cluster.html" title="第22章MySQL NDB Cluster 8.0"><code class="literal">NDB</code></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">存储引擎的</font>
											<font style="vertical-align: inherit;">表</font>
											<font style="vertical-align: inherit;">被隐式分区
											</font>
										</font><code class="literal">KEY</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">，再次使用表的主键作为分区键。</font>
											<font style="vertical-align: inherit;">如果NDB Cluster表没有显式主键，</font>
											<font style="vertical-align: inherit;">则</font>
											<font style="vertical-align: inherit;">存储引擎为每个NDB Cluster表</font>
											<font style="vertical-align: inherit;">生成</font>
											<font style="vertical-align: inherit;">的
											</font>
										</font><span class="quote">
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">“ </font>
											</font><span class="quote">
												<font style="vertical-align: inherit;">
													<font style="vertical-align: inherit;">隐藏</font>
												</font>
											</span>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;"> ”</font>
											</font>
										</span>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">主键
											</font>
										</font><a class="link" href="mysql-cluster.html" title="第22章MySQL NDB Cluster 8.0"><code class="literal">NDB</code></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">将用作分区键。
											</font>
										</font>
									</p>
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												如果为</font>
										</font><a class="link" href="mysql-cluster.html" title="第22章MySQL NDB Cluster 8.0"><code class="literal">NDB</code></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">表</font>
											<font style="vertical-align: inherit;">定义显式分区方案
											</font>
											<font style="vertical-align: inherit;">，则表必须具有显式主键，并且分区表达式中使用的任何列都必须是此键的一部分。</font>
											<font style="vertical-align: inherit;">但是，如果表使用</font>
										</font><span class="quote">
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">“ </font>
											</font><span class="quote">
												<font style="vertical-align: inherit;">
													<font style="vertical-align: inherit;">空</font>
												</font>
											</span>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;"> ”</font>
											</font>
										</span>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">分区表达式（即</font>
										</font><code class="literal">PARTITION BY
											KEY()</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">没有列引用），则不需要显式主键。
											</font>
										</font>
									</p>
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												您可以使用</font>
										</font><a class="link" href="mysql-cluster.html#mysql-cluster-programs-ndb-desc" title="22.4.9 ndb_desc  - 描述NDB表"><span
											 class="command"><strong>
													<font style="vertical-align: inherit;">
														<font style="vertical-align: inherit;">ndb_desc</font>
													</font>
												</strong></span></a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">实用程序（使用该
											</font>
										</font><code class="option">-p</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">选项）</font>
											<font style="vertical-align: inherit;">观察此分区
											</font>
											<font style="vertical-align: inherit;">。
											</font>
										</font>
									</p>
								</div>
								<div class="important" style="margin-left: 0.5in; margin-right: 0.5in;">
									<div class="admon-title">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												重要
											</font>
										</font>
									</div>
									<p>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">
												对于键分区表，您不能执行
											</font>
										</font><code class="literal">ALTER TABLE DROP PRIMARY KEY</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">，因为这样做会生成错误</font>
										</font><span class="errortext">
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">ERROR 1466（HY000）：表中未找到分区函数的字段列表中的字段</font>
											</font>
										</span>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">。</font>
											<font style="vertical-align: inherit;">这对于被分区的NDB Cluster表来说不是问题</font>
										</font><code class="literal">KEY</code>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">; </font>
											<font style="vertical-align: inherit;">在这种情况下，使用</font>
										</font><span class="quote">
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">“ </font>
											</font><span class="quote">
												<font style="vertical-align: inherit;">
													<font style="vertical-align: inherit;">隐藏</font>
												</font>
											</span>
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;"> ”</font>
											</font>
										</span>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">主键作为表的新分区键</font>
											<font style="vertical-align: inherit;">重新组织
											</font>
											<font style="vertical-align: inherit;">表。</font>
											<font style="vertical-align: inherit;">请参见</font>
										</font><a class="xref" href="mysql-cluster.html" title="第22章MySQL NDB Cluster 8.0">
											<font style="vertical-align: inherit;">
												<font style="vertical-align: inherit;">第22章，</font>
											</font><i>
												<font style="vertical-align: inherit;">
													<font style="vertical-align: inherit;">MySQL NDB Cluster 8.0</font>
												</font>
											</i>
										</a>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">。
											</font>
										</font>
									</p>
								</div>
							</li>
						</ul>
					</div>
					<a class="indexterm" name="idm140091573635008"></a><a class="indexterm" name="idm140091573633520"></a>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								也可以通过线性键对表进行分区。</font>
							<font style="vertical-align: inherit;">这是一个简单的例子：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE tk（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col1 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col2 CHAR（5），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col3 DATE</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
线性键分区（col1）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITIONS 3;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								所述</font>
						</font><code class="literal">LINEAR</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">关键字对相同的效果
							</font>
						</font><code class="literal">KEY</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分隔因为它在
							</font>
						</font><code class="literal">HASH</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区，使用权力-的二个一个算法，而不是模运算而导出的分区号。</font>
							<font style="vertical-align: inherit;">有关</font>
							<font style="vertical-align: inherit;">此算法及其含义的说明，</font>
							<font style="vertical-align: inherit;">请参见</font>
						</font><a class="xref" href="partitioning.html#partitioning-linear-hash" title="23.2.4.1线性哈希分区">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第23.2.4.1节“线性HASH分区”</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
				</div>
				<div class="section">
					<div class="titlepage">
						<div>
							<div>
								<h3 class="title"><a name="partitioning-subpartitions"></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.2.6分区</font>
									</font>
								</h3>

							</div>

						</div>

					</div>
					<a class="indexterm" name="idm140091573626096"></a><a class="indexterm" name="idm140091573625024"></a>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								子</font>
						</font><span class="firstterm">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">分区</font>
							</font>
						</span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;"> - </font>
							<font style="vertical-align: inherit;">也称为
							</font><span class="firstterm">
								<font style="vertical-align: inherit;">复合分区</font>
							</span>
							<font style="vertical-align: inherit;"> - 是分区表中每个分区的进一步划分。</font>
							<font style="vertical-align: inherit;">请考虑以下
							</font>
						</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">声明：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE ts（id INT，购买日期）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    按比例分区（年（购买））</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    HASH的子公司（TO_DAYS（已购买））</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    SUBPARTITIONS 2（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分数p0值低于（1990），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p1值小于（2000），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p2值小于MAXVALUE</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    ）;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								表</font>
						</font><code class="literal">ts</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">有3个</font>
						</font><code class="literal">RANGE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								分区。</font>
							<font style="vertical-align: inherit;">这些分区-中的每一个</font>
						</font><code class="literal">p0</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，</font>
						</font><code class="literal">p1</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">和</font>
						</font><code class="literal">p2</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">-is进一步分成2子分区。</font>
							<font style="vertical-align: inherit;">实际上，整个表分为多个
							</font>
						</font><code class="literal">3 * 2 = 6</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区。</font>
							<font style="vertical-align: inherit;">但是，由于该</font>
						</font><code class="literal">PARTITION BY RANGE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">子句</font>
							<font style="vertical-align: inherit;">的作用</font>
							<font style="vertical-align: inherit;">，其中前两个仅存储</font>
						</font><code class="literal">purchased</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">列中</font>
							<font style="vertical-align: inherit;">值小于1990的那些记录</font>
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p><a class="indexterm" name="idm140091573613888"></a>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								可以对由</font>
						</font><code class="literal">RANGE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">或</font>
							<font style="vertical-align: inherit;">分区的子表进行分区
							</font>
						</font><code class="literal">LIST</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">子</font>
							<font style="vertical-align: inherit;">分区</font>
							<font style="vertical-align: inherit;">可以使用</font>
						</font><code class="literal">HASH</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">或
							</font>
						</font><code class="literal">KEY</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区。</font>
							<font style="vertical-align: inherit;">这也称为
							</font>
						</font><span class="firstterm">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">复合分区</font>
							</font>
						</span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">

						<div class="admon-title">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									注意
								</font>
							</font>
						</div>
						<p>
							<code class="literal">SUBPARTITION BY HASH</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">和
								</font>
							</font><code class="literal">SUBPARTITION BY KEY</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">一般遵循相同的语法规则</font>
							</font><code class="literal">PARTITION BY HASH</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">和
								</font>
							</font><code class="literal">PARTITION BY KEY</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">分别。</font>
								<font style="vertical-align: inherit;">例外情况是</font>
							</font><code class="literal">SUBPARTITION BY
								KEY</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">（不像</font>
							</font><code class="literal">PARTITION BY KEY</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">）当前不支持默认列，因此必须指定用于此目的的列，即使该表具有显式主键也是如此。</font>
								<font style="vertical-align: inherit;">这是我们正在努力解决的一个已知问题; </font>
								<font style="vertical-align: inherit;">有关详细信息和示例，</font>
								<font style="vertical-align: inherit;">请参阅
								</font>
							</font><a class="xref" href="partitioning.html#partitioning-limitations-subpartitions" title="子分区的问题">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">子分区的问题</font>
								</font>
							</a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">。
								</font>
							</font>
						</p>
					</div>
					<a class="indexterm" name="idm140091573602336"></a>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								也可以使用</font>
						</font><code class="literal">SUBPARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">子句</font>
							<font style="vertical-align: inherit;">显式定义子分区，
							</font>
							<font style="vertical-align: inherit;">以指定各个子分区的选项。</font>
							<font style="vertical-align: inherit;">例如，创建与</font>
						</font><code class="literal">ts</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">上一个示例中显示</font>
							<font style="vertical-align: inherit;">的相同的表的更详细的方式</font>
							<font style="vertical-align: inherit;">是：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE ts（id INT，购买日期）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    按比例分区（年（购买））</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    HASH的消息（TO_DAYS（购买））（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分数p0值低于（1990）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
            SUBPARTITION s0，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
            SUBPARTITION s1</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        ）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p1值低于（2000）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
            SUBPARTITION s2，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
            SUBPARTITION s3</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        ）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p2值低于MAXVALUE（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
            SUBPARTITION s4，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
            SUBPARTITION s5</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        ）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    ）;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								这里列出了一些注释的句法项：
							</font>
						</font>
					</p>
					<div class="itemizedlist">
						<ul class="itemizedlist" style="list-style-type: disc; ">
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											每个分区必须具有相同数量的子分区。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											如果</font>
									</font><code class="literal">SUBPARTITION</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">在分区表的</font>
										<font style="vertical-align: inherit;">任何分区</font>
										<font style="vertical-align: inherit;">上</font>
										<font style="vertical-align: inherit;">显式定义任何子分区
										</font>
										<font style="vertical-align: inherit;">，则必须全部定义它们。</font>
										<font style="vertical-align: inherit;">换句话说，以下语句将失败：
										</font>
									</font>
								</p>
								<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE ts（id INT，购买日期）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    按比例分区（年（购买））</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    HASH的消息（TO_DAYS（购买））（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分数p0值低于（1990）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
            SUBPARTITION s0，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
            SUBPARTITION s1</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        ）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p1值小于（2000），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p2值低于MAXVALUE（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
            SUBPARTITION s2，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
            SUBPARTITION s3</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        ）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    ）;</font></font><font></font>
</pre>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											即使使用此语句仍然会失败
										</font>
									</font><code class="literal">SUBPARTITIONS 2</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											每个</font>
									</font><code class="literal">SUBPARTITION</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">子句必须包含（至少）子分区的名称。</font>
										<font style="vertical-align: inherit;">否则，您可以为子分区设置任何所需选项，或允许其采用该选项的默认设置。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											子分区名称在整个表中必须是唯一的。</font>
										<font style="vertical-align: inherit;">例如，以下</font>
									</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
											TABLE</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">语句有效：
										</font>
									</font>
								</p>
								<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE ts（id INT，购买日期）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    按比例分区（年（购买））</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    HASH的消息（TO_DAYS（购买））（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分数p0值低于（1990）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
            SUBPARTITION s0，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
            SUBPARTITION s1</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        ）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p1值低于（2000）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
            SUBPARTITION s2，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
            SUBPARTITION s3</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        ）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p2值低于MAXVALUE（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
            SUBPARTITION s4，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
            SUBPARTITION s5</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        ）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    ）;</font></font><font></font>
</pre>
							</li>
						</ul>
					</div>

				</div>
				<div class="section">
					<div class="titlepage">
						<div>
							<div>
								<h3 class="title"><a name="partitioning-handling-nulls"></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.2.7 MySQL分区如何处理NULL</font>
									</font>
								</h3>

							</div>

						</div>

					</div>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								MySQL中的分区没有什么可以</font>
						</font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">作为分区表达式的值</font>
							<font style="vertical-align: inherit;">来禁止
							</font>
							<font style="vertical-align: inherit;">，无论它是列值还是用户提供的表达式的值。</font>
							<font style="vertical-align: inherit;">即使允许使用
							</font>
						</font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">表达式的值，否则必须产生一个整数，重要的是要记住，这
							</font>
						</font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">不是一个数字。</font>
							<font style="vertical-align: inherit;">MySQL的分区实现视为</font>
						</font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">小于任何非</font>
						</font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">值，就像那样
							</font>
						</font><code class="literal">ORDER BY</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								这意味着</font>
						</font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">不同类型的分区之间的</font>
							<font style="vertical-align: inherit;">处理会</font>
							<font style="vertical-align: inherit;">有所不同，如果您没有做好准备，可能会产生您不期望的行为。</font>
							<font style="vertical-align: inherit;">在这种情况下，我们将在本节中讨论每个MySQL分区类型</font>
						</font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">在确定应存储行的分区时</font>
							<font style="vertical-align: inherit;">如何处理</font>
							<font style="vertical-align: inherit;">值，并为每个分区提供示例。
							</font>
						</font>
					</p>
					<p><b>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">使用RANGE分区处理NULL。&nbsp;</font>
							</font>
						</b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								如果将行插入到由
							</font>
						</font><code class="literal">RANGE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">用于确定分区的列值分隔的表中</font>
						</font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，则该行将插入到最低分区中。</font>
							<font style="vertical-align: inherit;">在名为的数据库中考虑这两个表</font>
						</font><code class="literal">p</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，创建如下：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>CREATE TABLE t1 (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>c1 INT,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>c2 VARCHAR(20)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>PARTITION BY RANGE(c1) (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p0 VALUES LESS THAN (0),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p1 VALUES LESS THAN (10),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p2 VALUES LESS THAN MAXVALUE</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;</font></font><strong class="userinput"><code>);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，0行受影响（0.09秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font></font><strong class="userinput"><code>CREATE TABLE t2 (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>c1 INT,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>c2 VARCHAR(20)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>PARTITION BY RANGE(c1) (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p0 VALUES LESS THAN (-5),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p1 VALUES LESS THAN (0),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p2 VALUES LESS THAN (10),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p3 VALUES LESS THAN MAXVALUE</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;</font></font><strong class="userinput"><code>);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，0行受影响（0.09秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								您可以</font>
						</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">使用以下查询针对</font>
							<font style="vertical-align: inherit;">数据库</font>
							<font style="vertical-align: inherit;">中的</font>
						</font><a class="link" href="information-schema.html#partitions-table" title="25.17 INFORMATION_SCHEMA PARTITIONS表"><code
							 class="literal">PARTITIONS</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">表
							</font>
							<font style="vertical-align: inherit;">查看这两个</font>
							<font style="vertical-align: inherit;">语句
							</font>
							<font style="vertical-align: inherit;">创建的分区
							</font>
						</font><code class="literal">INFORMATION_SCHEMA</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>SELECT TABLE_NAME, PARTITION_NAME, TABLE_ROWS, AVG_ROW_LENGTH, DATA_LENGTH</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
     &gt;    </font></font><strong class="userinput"><code>FROM INFORMATION_SCHEMA.PARTITIONS</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
     &gt;   </font></font><strong class="userinput"><code>WHERE TABLE_SCHEMA = 'p' AND TABLE_NAME LIKE 't_';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------ + ---------------- + ------------ + ------ ---------- + ------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">TABLE_NAME | </font><font style="vertical-align: inherit;">PARTITION_NAME | </font><font style="vertical-align: inherit;">TABLE_ROWS | </font><font style="vertical-align: inherit;">AVG_ROW_LENGTH | </font><font style="vertical-align: inherit;">DATA_LENGTH |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------ + ---------------- + ------------ + ------ ---------- + ------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">t1 | </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">t1 | </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">t1 | </font><font style="vertical-align: inherit;">p2 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">t2 | </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">t2 | </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">t2 | </font><font style="vertical-align: inherit;">p2 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">t2 | </font><font style="vertical-align: inherit;">p3 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------ + ---------------- + ------------ + ------ ---------- + ------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
7行（0.00秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								（有关此表的更多信息，请参见
							</font>
						</font><a class="xref" href="information-schema.html#partitions-table" title="25.17 INFORMATION_SCHEMA PARTITIONS表">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第25.17节“INFORMATION_SCHEMA PARTITIONS表”</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。）现在让我们使用包含</font>
						</font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">在用作分区键的列中的</font>
							<font style="vertical-align: inherit;">一行的每一个表填充这些表
							</font>
							<font style="vertical-align: inherit;">，并验证是否插入了行使用一对
							</font>
						</font><a class="link" href="sql-syntax.html#select" title="13.2.10 SELECT语法"><code class="literal">SELECT</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">陈述：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>INSERT INTO t1 VALUES (NULL, 'mothra');</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，1行受影响（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>INSERT INTO t2 VALUES (NULL, 'mothra');</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，1行受影响（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>SELECT * FROM t1;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + -------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">id | </font><font style="vertical-align: inherit;">名字|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + -------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">NULL | </font><font style="vertical-align: inherit;">mothra |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + -------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
1排（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>SELECT * FROM t2;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + -------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">id | </font><font style="vertical-align: inherit;">名字|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + -------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">NULL | </font><font style="vertical-align: inherit;">mothra |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + -------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
1排（0.00秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								您可以通过重新运行上一个查询</font>
						</font><a class="link" href="information-schema.html#partitions-table" title="25.17 INFORMATION_SCHEMA PARTITIONS表"><code
							 class="literal">INFORMATION_SCHEMA.PARTITIONS</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">并检查输出</font>
							<font style="vertical-align: inherit;">来查看用于存储插入行的分区
							</font>
							<font style="vertical-align: inherit;">：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>SELECT TABLE_NAME, PARTITION_NAME, TABLE_ROWS, AVG_ROW_LENGTH, DATA_LENGTH</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
     &gt;    </font></font><strong class="userinput"><code>FROM INFORMATION_SCHEMA.PARTITIONS</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
     &gt;   </font></font><strong class="userinput"><code>WHERE TABLE_SCHEMA = 'p' AND TABLE_NAME LIKE 't_';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------ + ---------------- + ------------ + ------ ---------- + ------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">TABLE_NAME | </font><font style="vertical-align: inherit;">PARTITION_NAME | </font><font style="vertical-align: inherit;">TABLE_ROWS | </font><font style="vertical-align: inherit;">AVG_ROW_LENGTH | </font><font style="vertical-align: inherit;">DATA_LENGTH |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------ + ---------------- + ------------ + ------ ---------- + ------------- +</font></font><font></font>
<span class="emphasis"><em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">| </font><font style="vertical-align: inherit;">t1 | </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">1 | </font><font style="vertical-align: inherit;">20 | </font><font style="vertical-align: inherit;">20 |</font></font></em></span><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">t1 | </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">t1 | </font><font style="vertical-align: inherit;">p2 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font>
<span class="emphasis"><em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">| </font><font style="vertical-align: inherit;">t2 | </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">1 | </font><font style="vertical-align: inherit;">20 | </font><font style="vertical-align: inherit;">20 |</font></font></em></span><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">t2 | </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">t2 | </font><font style="vertical-align: inherit;">p2 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">t2 | </font><font style="vertical-align: inherit;">p3 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------ + ---------------- + ------------ + ------ ---------- + ------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
7行（0.01秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								您还可以通过删除这些分区，然后重新运行</font>
						</font><a class="link" href="sql-syntax.html#select" title="13.2.10 SELECT语法"><code class="literal">SELECT</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句</font>
							<font style="vertical-align: inherit;">来证明这些行存储在每个表的编号最小的分区中
							</font>
							<font style="vertical-align: inherit;">：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>ALTER TABLE t1 DROP PARTITION p0;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.16秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>ALTER TABLE t2 DROP PARTITION p0;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.16秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>SELECT * FROM t1;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
空集（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>SELECT * FROM t2;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
空集（0.00秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								（有关更多信息</font>
						</font><code class="literal">ALTER TABLE ... DROP
							PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，请参见</font>
						</font><a class="xref" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第13.1.9节“ALTER TABLE语法”</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。）
							</font>
						</font>
					</p>
					<p>
						<code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">也以这种方式处理对使用SQL函数的表达式进行分区。</font>
							<font style="vertical-align: inherit;">假设我们使用如下</font>
						</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句</font>
							<font style="vertical-align: inherit;">定义表</font>
							<font style="vertical-align: inherit;">：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE tndate（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    dt DATE</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
按比例分区（年（dt））（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分数p0值低于（1990），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p1值小于（2000），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p2值小于MAXVALUE</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								与其他MySQL函数一样，
							</font>
						</font><a class="link" href="functions.html#function_year"><code class="literal">YEAR(NULL)</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">返回
							</font>
						</font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">用一排</font>
						</font><code class="literal">dt</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								的列值</font>
						</font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">被视为虽然分隔表情评估到低于任何其他值的值，因此被插入到分区</font>
						</font><code class="literal">p0</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p><b>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">使用LIST分区处理NULL。&nbsp;</font>
							</font>
						</b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">当且仅当使用包含的值列表定义其中一个</font>
							<font style="vertical-align: inherit;">
								分区时，通过</font>
						</font><code class="literal">LIST</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">允许
							</font>
						</font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">值分区的表
							</font>
						</font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">与此相反的是，</font>
						</font><code class="literal">LIST</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">未</font>
						</font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">在值列表中</font>
							<font style="vertical-align: inherit;">明确使用的</font>
							<font style="vertical-align: inherit;">分区</font>
							<font style="vertical-align: inherit;">表会拒绝导致</font>
						</font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区表达式值的</font>
							<font style="vertical-align: inherit;">行</font>
							<font style="vertical-align: inherit;">，如下例所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>CREATE TABLE ts1 (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>c1 INT,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>c2 VARCHAR(20)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>PARTITION BY LIST(c1) (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p0 VALUES IN (0, 3, 6),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p1 VALUES IN (1, 4, 7),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p2 VALUES IN (2, 5, 8)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;</font></font><strong class="userinput"><code>);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.01秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font><span class="errortext"><font style="vertical-align: inherit;">ERROR 1504（HY000）：表没有值为9的分区</font></span></font><strong class="userinput"><code>INSERT INTO ts1 VALUES (9, 'mothra');</code></strong>
<span class="errortext"><font style="vertical-align: inherit;"></font></span><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font><span class="errortext"><font style="vertical-align: inherit;">ERROR 1504（HY000）：表没有值为NULL的分区</font></span></font><strong class="userinput"><code>INSERT INTO ts1 VALUES (NULL, 'mothra');</code></strong>
<span class="errortext"><font style="vertical-align: inherit;"></font></span>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								只能</font>
							<font style="vertical-align: inherit;">插入</font>
							<font style="vertical-align: inherit;">具有</font>
						</font><code class="literal">c1</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">介于</font>
						</font><code class="literal">0</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">和</font>
							<font style="vertical-align: inherit;">之间</font>
							<font style="vertical-align: inherit;">的</font>
							<font style="vertical-align: inherit;">值的
							</font>
							<font style="vertical-align: inherit;">行</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">
								落在这个范围之外，就像数字一样
							</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">我们可以创建表
							</font>
							<font style="vertical-align: inherit;">并</font>
							<font style="vertical-align: inherit;">包含值列表</font>
							<font style="vertical-align: inherit;">，如下所示：
							</font>
						</font><code class="literal">8</code>
						<font style="vertical-align: inherit;"></font><code class="literal">ts1</code>
						<font style="vertical-align: inherit;"></font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;"></font><code class="literal">9</code>
						<font style="vertical-align: inherit;"></font><code class="literal">ts2</code>
						<font style="vertical-align: inherit;"></font><code class="literal">ts3</code>
						<font style="vertical-align: inherit;"></font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;"></font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>CREATE TABLE ts2 (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>c1 INT,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>c2 VARCHAR(20)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>PARTITION BY LIST(c1) (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p0 VALUES IN (0, 3, 6),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p1 VALUES IN (1, 4, 7),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p2 VALUES IN (2, 5, 8),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p3 VALUES IN (NULL)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;</font></font><strong class="userinput"><code>);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.01秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font></font><strong class="userinput"><code>CREATE TABLE ts3 (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>c1 INT,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>c2 VARCHAR(20)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>PARTITION BY LIST(c1) (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p0 VALUES IN (0, 3, 6),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p1 VALUES IN (1, 4, 7, NULL),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p2 VALUES IN (2, 5, 8)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;</font></font><strong class="userinput"><code>);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.01秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								在定义分区的值列表时，您可以（并且应该）像处理</font>
						</font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">任何其他值一样</font>
							<font style="vertical-align: inherit;">对待</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">例如，无论是</font>
						</font><code class="literal">VALUES IN (NULL)</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">和
							</font>
						</font><code class="literal">VALUES IN (1, 4, 7, NULL)</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">是有效的，因为是
							</font>
						</font><code class="literal">VALUES IN (1, NULL, 4, 7)</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，</font>
						</font><code class="literal">VALUES IN
							(NULL, 1, 4, 7)</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">等。</font>
							<font style="vertical-align: inherit;">您可以将具有行</font>
						</font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">列</font>
						</font><code class="literal">c1</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								到每个表</font>
						</font><code class="literal">ts2</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">和
							</font>
						</font><code class="literal">ts3</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>INSERT INTO ts2 VALUES (NULL, 'mothra');</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，1行受影响（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>INSERT INTO ts3 VALUES (NULL, 'mothra');</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，1行受影响（0.00秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								通过发出适当的查询对
							</font>
						</font><a class="link" href="information-schema.html#partitions-table" title="25.17 INFORMATION_SCHEMA PARTITIONS表"><code
							 class="literal">INFORMATION_SCHEMA.PARTITIONS</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，你可以决定哪些分区用来存放刚插入的行（我们假设，在前面的例子中，该分区表中所创建的</font>
						</font><code class="literal">p</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								数据库）：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>SELECT TABLE_NAME, PARTITION_NAME, TABLE_ROWS, AVG_ROW_LENGTH, DATA_LENGTH</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
     &gt;    </font></font><strong class="userinput"><code>FROM INFORMATION_SCHEMA.PARTITIONS</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
     &gt;   </font></font><strong class="userinput"><code>WHERE TABLE_SCHEMA = 'p' AND TABLE_NAME LIKE 'ts_';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------ + ---------------- + ------------ + ------ ---------- + ------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">TABLE_NAME | </font><font style="vertical-align: inherit;">PARTITION_NAME | </font><font style="vertical-align: inherit;">TABLE_ROWS | </font><font style="vertical-align: inherit;">AVG_ROW_LENGTH | </font><font style="vertical-align: inherit;">DATA_LENGTH |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------ + ---------------- + ------------ + ------ ---------- + ------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">ts2 | </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">ts2 | </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">ts2 | </font><font style="vertical-align: inherit;">p2 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font>
<span class="emphasis"><em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">| </font><font style="vertical-align: inherit;">ts2 | </font><font style="vertical-align: inherit;">p3 | </font><font style="vertical-align: inherit;">1 | </font><font style="vertical-align: inherit;">20 | </font><font style="vertical-align: inherit;">20 |</font></font></em></span><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">ts3 | </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font>
<span class="emphasis"><em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">| </font><font style="vertical-align: inherit;">ts3 | </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">1 | </font><font style="vertical-align: inherit;">20 | </font><font style="vertical-align: inherit;">20 |</font></font></em></span><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">ts3 | </font><font style="vertical-align: inherit;">p2 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------ + ---------------- + ------------ + ------ ---------- + ------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
7行（0.01秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								如本节前面所示，您还可以通过删除这些分区然后执行a来验证用于存储行的分区
							</font>
						</font><a class="link" href="sql-syntax.html#select" title="13.2.10 SELECT语法"><code class="literal">SELECT</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p><b>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">使用HASH和KEY分区处理NULL。&nbsp;</font>
							</font>
						</b>
						<code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">对于由</font>
						</font><code class="literal">HASH</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">或
							</font>
							<font style="vertical-align: inherit;">分区的表，处理方式有所不同</font>
						</font><code class="literal">KEY</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">在这些情况下，产生</font>
						</font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">值的</font>
							<font style="vertical-align: inherit;">任何分区表达式</font>
							<font style="vertical-align: inherit;">都被视为其返回值为零。</font>
							<font style="vertical-align: inherit;">我们可以通过检查文件系统对创建分区的表的影响</font>
						</font><code class="literal">HASH</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">并使用包含适当值的记录填充它</font>
							<font style="vertical-align: inherit;">来验证此行为</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">假设您有一个</font>
							<font style="vertical-align: inherit;">使用以下语句创建</font>
							<font style="vertical-align: inherit;">的表</font>
						</font><code class="literal">th</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">（也在</font>
						</font><code class="literal">p</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">数据库中）：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>CREATE TABLE th (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>c1 INT,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>c2 VARCHAR(20)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>PARTITION BY HASH(c1)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;</font></font><strong class="userinput"><code>PARTITIONS 2;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，0行受影响（0.00秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								可以使用此处显示的查询查看属于此表的分区：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; SELECT TABLE_NAME，PARTITION_NAME，TABLE_ROWS，AVG_ROW_LENGTH，DATA_LENGTH</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
     &gt; FROM INFORMATION_SCHEMA.PARTITIONS</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
     &gt; WHERE TABLE_SCHEMA ='p'和TABLE_NAME ='th';</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------ + ---------------- + ------------ + ------ ---------- + ------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">TABLE_NAME | </font><font style="vertical-align: inherit;">PARTITION_NAME | </font><font style="vertical-align: inherit;">TABLE_ROWS | </font><font style="vertical-align: inherit;">AVG_ROW_LENGTH | </font><font style="vertical-align: inherit;">DATA_LENGTH |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------ + ---------------- + ------------ + ------ ---------- + ------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">th | </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">th | </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------ + ---------------- + ------------ + ------ ---------- + ------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
2行（0.00秒）</font></font><font></font>
</pre>
					<p>
						<code class="literal">TABLE_ROWS</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">对于每个分区为0.现在在</font>
						</font><code class="literal">th</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">其
							</font>
						</font><code class="literal">c1</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">列值为</font>
						</font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								0和0的位置</font>
							<font style="vertical-align: inherit;">插入两行</font>
							<font style="vertical-align: inherit;">，并验证是否插入了这些行，如下所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>INSERT INTO th VALUES (NULL, 'mothra'), (0, 'gigan');</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，1行受影响（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>SELECT * FROM th;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + --------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">c1 | </font><font style="vertical-align: inherit;">c2 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + --------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">NULL | </font><font style="vertical-align: inherit;">mothra |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + --------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">吉甘|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + --------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
2行（0.01秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								回想一下，对于任何整数</font>
						</font><em class="replaceable"><code>N</code></em>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，值</font>
							<font style="vertical-align: inherit;">始终为
							</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">对于由</font>
							<font style="vertical-align: inherit;">or </font>
							<font style="vertical-align: inherit;">分区的表，将
							</font>
							<font style="vertical-align: inherit;">对此结果进行处理以确定正确的分区为
							</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">再次</font>
							<font style="vertical-align: inherit;">检查
							</font>
							<font style="vertical-align: inherit;">表，我们可以看到两行都插入到分区中</font>
							<font style="vertical-align: inherit;">：
							</font>
						</font><code class="literal">NULL MOD
							<em class="replaceable"><code>N</code></em></code>
						<font style="vertical-align: inherit;"></font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;"></font><code class="literal">HASH</code>
						<font style="vertical-align: inherit;"></font><code class="literal">KEY</code>
						<font style="vertical-align: inherit;"></font><code class="literal">0</code>
						<font style="vertical-align: inherit;"></font><a class="link" href="information-schema.html#partitions-table"
						 title="25.17 INFORMATION_SCHEMA PARTITIONS表"><code class="literal">INFORMATION_SCHEMA.PARTITIONS</code></a>
						<font style="vertical-align: inherit;"></font><code class="literal">p0</code>
						<font style="vertical-align: inherit;"></font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>SELECT TABLE_NAME, PARTITION_NAME, TABLE_ROWS, AVG_ROW_LENGTH, DATA_LENGTH</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
     &gt;    </font></font><strong class="userinput"><code>FROM INFORMATION_SCHEMA.PARTITIONS</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
     &gt;   </font></font><strong class="userinput"><code>WHERE TABLE_SCHEMA = 'p' AND TABLE_NAME ='th';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------ + ---------------- + ------------ + ------ ---------- + ------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">TABLE_NAME | </font><font style="vertical-align: inherit;">PARTITION_NAME | </font><font style="vertical-align: inherit;">TABLE_ROWS | </font><font style="vertical-align: inherit;">AVG_ROW_LENGTH | </font><font style="vertical-align: inherit;">DATA_LENGTH |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------ + ---------------- + ------------ + ------ ---------- + ------------- +</font></font><font></font>
<span class="emphasis"><em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">| </font><font style="vertical-align: inherit;">th | </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">2 | </font><font style="vertical-align: inherit;">20 | </font><font style="vertical-align: inherit;">20 |</font></font></em></span><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">th | </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------ + ---------------- + ------------ + ------ ---------- + ------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
2行（0.00秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								通过使用</font>
						</font><code class="literal">PARTITION BY
							KEY</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">代替</font>
						</font><code class="literal">PARTITION BY HASH</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								表的定义</font>
							<font style="vertical-align: inherit;">重复最后一个示例</font>
							<font style="vertical-align: inherit;">，您可以验证
							</font>
						</font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">对于这种类型的分区也被视为0。
							</font>
						</font>
					</p>
				</div>

			</div>
			<div class="section">
				<div class="titlepage">
					<div>
						<div>
							<h2 class="title" style="clear: both"><a name="partitioning-management"></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">23.3分区管理</font>
								</font>
							</h2>

						</div>

					</div>

				</div>
				<div class="toc">
					<dl class="toc"><dt><span class="section"><a href="partitioning.html#partitioning-management-range-list">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.3.1 RANGE和LIST分区的管理</font>
									</font>
								</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-management-hash-key">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.3.2 HASH和KEY分区的管理</font>
									</font>
								</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-management-exchange">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.3.3使用表格交换分区和子分区</font>
									</font>
								</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-maintenance">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.3.4分区的维护</font>
									</font>
								</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-info">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.3.5获取分区信息</font>
									</font>
								</a></span></dt></dl>
				</div>
				<a class="indexterm" name="idm140091573429200"></a><a class="indexterm" name="idm140091573428128"></a><a class="indexterm"
				 name="idm140091573426640"></a><a class="indexterm" name="idm140091573425152"></a><a class="indexterm" name="idm140091573423664"></a><a
				 class="indexterm" name="idm140091573422176"></a>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							有许多方法可以使用SQL语句来修改分区表; </font>
						<font style="vertical-align: inherit;">可以使用</font>
					</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
						 class="literal">ALTER
							TABLE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">语句</font>
						<font style="vertical-align: inherit;">的分区扩展来添加，删除，重新定义，合并或拆分现有分区
						</font>
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">还有一些方法可以获取有关分区表和分区的信息。</font>
						<font style="vertical-align: inherit;">我们将在后面的章节中讨论这些主题。
						</font>
					</font>
				</p>
				<div class="itemizedlist">
					<ul class="itemizedlist" style="list-style-type: disc; ">
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										有关使用</font>
								</font><code class="literal">RANGE</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">或
									</font>
									<font style="vertical-align: inherit;">分区的表中的分区管理的信息</font>
								</font><code class="literal">LIST</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，请参见
									</font>
								</font><a class="xref" href="partitioning.html#partitioning-management-range-list" title="23.3.1 RANGE和LIST分区的管理">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第23.3.1节“RANGE和LIST分区的管理”</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										有关管理</font>
								</font><code class="literal">HASH</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">和
									</font>
								</font><code class="literal">KEY</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">分区</font>
									<font style="vertical-align: inherit;">的讨论</font>
									<font style="vertical-align: inherit;">，请参见
									</font>
								</font><a class="xref" href="partitioning.html#partitioning-management-hash-key" title="23.3.2 HASH和KEY分区的管理">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第23.3.2节“HASH和KEY分区的管理”</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										有关</font>
									<font style="vertical-align: inherit;">MySQL 8.0中提供的用于获取有关分区表和分区的信息的机制的讨论，</font>
									<font style="vertical-align: inherit;">请参见</font>
								</font><a class="xref" href="partitioning.html#partitioning-info" title="23.3.5获取分区信息">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第23.3.5节“获取</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">有关分区的信息”。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										有关在分区上执行维护操作的讨论，请参见</font>
								</font><a class="xref" href="partitioning.html#partitioning-maintenance" title="23.3.4分区的维护">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第23.3.4节“分区维护”</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
					</ul>
				</div>
				<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
					<div class="admon-title">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								注意
							</font>
						</font>
					</div>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								分区表的所有分区必须具有相同数量的子分区; </font>
							<font style="vertical-align: inherit;">创建表后，无法更改子分区。
							</font>
						</font>
					</p>
				</div>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							要更改表的分区方案，只需要使用</font>
					</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
						 class="literal">ALTER
							TABLE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">带有</font>
					</font><em class="replaceable"><code>partition_options</code></em>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">选项</font>
						<font style="vertical-align: inherit;">的
						</font>
						<font style="vertical-align: inherit;">语句，该
						</font>
						<font style="vertical-align: inherit;">选项的语法与</font>
					</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
							TABLE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">创建分区表时</font>
						<font style="vertical-align: inherit;">使用的语法相同</font>
						<font style="vertical-align: inherit;">; </font>
						<font style="vertical-align: inherit;">此选项（也）始终以关键字开头</font>
					</font><code class="literal">PARTITION
						BY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">假设使用以下
						</font>
					</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
							TABLE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">语句创建按范围分区的表：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE trb3（id INT，名称VARCHAR（50），购买日期）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    按范围划分（年（购买））（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分数p0值低于（1990），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p1值低于（1995），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p2值低于（2000），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p3值低于（2005）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    ）;</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							要重新对此表进行重新分区，以便使用</font>
					</font><code class="literal">id</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">列值作为键的基础将其按键</font>
						<font style="vertical-align: inherit;">分区为两个分区</font>
						<font style="vertical-align: inherit;">，您可以使用以下语句：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">ALTER TABLE trb3 PARTITION BY KEY（id）PARTITIONS 2;
</font></font></pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							这对表的结构影响与删除表并使用重新创建表相同</font>
					</font><code class="literal">CREATE TABLE trb3
						PARTITION BY KEY(id) PARTITIONS 2;</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p>
					<code class="literal">ALTER TABLE ... ENGINE = ...</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">仅更改表使用的存储引擎，并保持表的分区方案不变。</font>
						<font style="vertical-align: inherit;">仅当目标存储引擎提供分区支持时，该语句才会成功。</font>
						<font style="vertical-align: inherit;">您可以使用
						</font>
					</font><code class="literal">ALTER TABLE ... REMOVE PARTITIONING</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">删除表的分区; </font>
						<font style="vertical-align: inherit;">请参见</font>
					</font><a class="xref" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第13.1.9节“ALTER TABLE语法”</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<div class="important" style="margin-left: 0.5in; margin-right: 0.5in;">

					<div class="admon-title">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								重要
							</font>
						</font>
					</div>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								只有一个单一的</font>
						</font><code class="literal">PARTITION BY</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，</font>
						</font><code class="literal">ADD
							PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，</font>
						</font><code class="literal">DROP PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，
							</font>
						</font><code class="literal">REORGANIZE PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，或</font>
						</font><code class="literal">COALESCE
							PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">子句可以在给定的使用
							</font>
						</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
							 class="literal">ALTER
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">说明。</font>
							<font style="vertical-align: inherit;">如果您（例如）希望删除分区并重新组织表的剩余分区，则必须在两个单独的
							</font>
						</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
							 class="literal">ALTER
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句中执行此操作（一个使用</font>
						</font><code class="literal">DROP
							PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，然后使用另一个
							</font>
						</font><code class="literal">REORGANIZE PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">）。
							</font>
						</font>
					</p>
				</div>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							您可以使用删除一个或多个所选分区中的所有行
						</font>
					</font><a class="link" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法"><code class="literal">ALTER
							TABLE ...
							TRUNCATE PARTITION</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<div class="section">

					<div class="titlepage">
						<div>
							<div>
								<h3 class="title"><a name="partitioning-management-range-list"></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.3.1 RANGE和LIST分区的管理</font>
									</font>
								</h3>
							</div>
						</div>
					</div>
					<a class="indexterm" name="idm140091573383584"></a><a class="indexterm" name="idm140091573382096"></a><a class="indexterm"
					 name="idm140091573380608"></a><a class="indexterm" name="idm140091573379120"></a>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								以类似的方式处理范围和列表分区的添加和删除，因此我们将在本节中讨论对这两种分区的管理。</font>
							<font style="vertical-align: inherit;">有关使用散列或密钥分区的表的信息，请参见
							</font>
						</font><a class="xref" href="partitioning.html#partitioning-management-hash-key" title="23.3.2 HASH和KEY分区的管理">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第23.3.2节“HASH和KEY分区的管理”</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								从通过任意分区的表中删除分区
							</font>
						</font><code class="literal">RANGE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">或</font>
						</font><code class="literal">LIST</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">可以使用来实现
							</font>
						</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
							 class="literal">ALTER
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">的发言</font>
						</font><code class="literal">DROP
							PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">选项。</font>
							<font style="vertical-align: inherit;">假设你已经创建了一个由范围分区，然后用10条记录使用下面的填充表格</font>
						</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">和</font>
						</font><a class="link" href="sql-syntax.html#insert" title="13.2.6 INSERT语法"><code class="literal">INSERT</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								报表：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>CREATE TABLE tr (id INT, name VARCHAR(50), purchased DATE)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION BY RANGE( YEAR(purchased) ) (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;          </font></font><strong class="userinput"><code>PARTITION p0 VALUES LESS THAN (1990),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;          </font></font><strong class="userinput"><code>PARTITION p1 VALUES LESS THAN (1995),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;          </font></font><strong class="userinput"><code>PARTITION p2 VALUES LESS THAN (2000),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;          </font></font><strong class="userinput"><code>PARTITION p3 VALUES LESS THAN (2005),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;          </font></font><strong class="userinput"><code>PARTITION p4 VALUES LESS THAN (2010),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;          </font></font><strong class="userinput"><code>PARTITION p5 VALUES LESS THAN (2015)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.28秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font></font><strong class="userinput"><code>INSERT INTO tr VALUES</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>(1, 'desk organiser', '2003-10-15'),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>(2, 'alarm clock', '1997-11-05'),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>(3, 'chair', '2009-03-10'),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>(4, 'bookcase', '1989-01-10'),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>(5, 'exercise bike', '2014-05-09'),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>(6, 'sofa', '1987-06-05'),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>(7, 'espresso maker', '2011-11-22'),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>(8, 'aquarium', '1992-08-04'),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>(9, 'study desk', '2006-09-16'),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>(10, 'lava lamp', '1998-12-25');</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，10行受影响（0.05秒）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
记录：10个重复：0个警告：0</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								您可以看到应该将哪些项插入分区
							</font>
						</font><code class="literal">p2</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，如下所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>SELECT * FROM tr</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>WHERE purchased BETWEEN '1995-01-01' AND '1999-12-31';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + ------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">id | </font><font style="vertical-align: inherit;">名字| </font><font style="vertical-align: inherit;">购买|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + ------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">2 | </font><font style="vertical-align: inherit;">闹钟| </font><font style="vertical-align: inherit;">1997-11-05 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">10 | </font><font style="vertical-align: inherit;">熔岩灯| </font><font style="vertical-align: inherit;">1998-12-25 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + ------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
2行（0.00秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								您还可以使用分区选择获取此信息，如下所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>SELECT * FROM tr PARTITION (p2);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + ------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">id | </font><font style="vertical-align: inherit;">名字| </font><font style="vertical-align: inherit;">购买|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + ------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">2 | </font><font style="vertical-align: inherit;">闹钟| </font><font style="vertical-align: inherit;">1997-11-05 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">10 | </font><font style="vertical-align: inherit;">熔岩灯| </font><font style="vertical-align: inherit;">1998-12-25 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + ------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
2行（0.00秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								有关</font>
							<font style="vertical-align: inherit;">更多信息</font>
						</font><a class="xref" href="partitioning.html#partitioning-selection" title="23.5分区选择">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">请参见</font><a class="xref" href="partitioning.html#partitioning-selection"
							 title="23.5分区选择">
								<font style="vertical-align: inherit;">第23.5节“分区选择”</font>
							</a>
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								要删除命名的分区</font>
						</font><code class="literal">p2</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，请执行以下命令：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>ALTER TABLE tr DROP PARTITION p2;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，0行受影响（0.03秒）</font></font><font></font>
</pre>
					<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">

						<div class="admon-title">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									注意
								</font>
							</font>
						</div>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									该</font>
							</font><a class="link" href="mysql-cluster.html" title="第22章MySQL NDB Cluster 8.0"><code class="literal">NDBCLUSTER</code></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">存储引擎不支持</font>
							</font><code class="literal">ALTER TABLE ... DROP
								PARTITION</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">。</font>
								<font style="vertical-align: inherit;">但是，它确实支持</font>
							</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
								 class="literal">ALTER
									TABLE</code></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">本章中描述</font>
								<font style="vertical-align: inherit;">的其他与分区相关的扩展
								</font>
								<font style="vertical-align: inherit;">。
								</font>
							</font>
						</p>
					</div>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								请务必记住，</font>
						</font><span class="emphasis"><em>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">删除分区时，还会删除该分区中存储的所有数据</font>
								</font>
							</em></span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">通过重新运行上一个</font>
						</font><a class="link" href="sql-syntax.html#select" title="13.2.10 SELECT语法"><code class="literal">SELECT</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								查询</font>
							<font style="vertical-align: inherit;">，您可以看到这种情况</font>
							<font style="vertical-align: inherit;">：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>SELECT * FROM tr WHERE purchased</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;</font></font><strong class="userinput"><code>BETWEEN '1995-01-01' AND '1999-12-31';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
空集（0.00秒）</font></font><font></font>
</pre>
					<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">

						<div class="admon-title">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									注意
								</font>
							</font>
						</div>
						<p>
							<code class="literal">DROP PARTITION</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">本机分区就地API支持，可以使用
								</font>
							</font><code class="literal">ALGORITHM={COPY|INPLACE}</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">。</font>
							</font><code class="literal">DROP
								PARTITION</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">与</font>
							</font><code class="literal">ALGORITHM=INPLACE</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									存储在该分区删除数据并丢弃分区。</font>
								<font style="vertical-align: inherit;">但是，</font>
							</font><code class="literal">DROP PARTITION</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">使用
								</font>
							</font><code class="literal">ALGORITHM=COPY</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">或
								</font>
							</font><a class="link" href="server-administration.html#sysvar_old_alter_table"><code class="literal">old_alter_table=ON</code></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">重建分区表并尝试将数据从已删除的分区移动到具有兼容</font>
							</font><code class="literal">PARTITION ... VALUES</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">定义的</font>
								<font style="vertical-align: inherit;">另一个分区
								</font>
								<font style="vertical-align: inherit;">。</font>
								<font style="vertical-align: inherit;">将删除无法移动到其他分区的数据。
								</font>
							</font>
						</p>
					</div>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								因此，您必须拥有</font>
						</font><a class="link" href="security.html#priv_drop"><code class="literal">DROP</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">表</font>
							<font style="vertical-align: inherit;">的
							</font>
							<font style="vertical-align: inherit;">权限才能</font>
						</font><code class="literal">ALTER TABLE ... DROP
							PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">在该表上</font>
							<font style="vertical-align: inherit;">执行</font>
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								如果希望在保留表定义及其分区方案的同时删除所有分区中的所有数据，请使用该</font>
						</font><a class="link" href="sql-syntax.html#truncate-table" title="13.1.37 TRUNCATE TABLE语法"><code class="literal">TRUNCATE
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句。</font>
							<font style="vertical-align: inherit;">（请参见</font>
						</font><a class="xref" href="sql-syntax.html#truncate-table" title="13.1.37 TRUNCATE TABLE语法">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第13.1.37节“TRUNCATE TABLE语法”</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。）
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								如果您打算在</font>
						</font><span class="emphasis"><em>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">不</font>
								</font>
							</em></span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">丢失数据的</font><span class="emphasis"><em>
									<font style="vertical-align: inherit;">情况下</font>
								</em></span>
							<font style="vertical-align: inherit;">更改表的分区
							</font>
							<font style="vertical-align: inherit;">，请</font>
						</font><code class="literal">ALTER
							TABLE ... REORGANIZE PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">改用。</font>
							<font style="vertical-align: inherit;">参见下面或在</font>
						</font><a class="xref" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第13.1.9，“ALTER TABLE语法”</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，有关的信息
							</font>
						</font><code class="literal">REORGANIZE PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								如果现在执行</font>
						</font><a class="link" href="sql-syntax.html#show-create-table" title="13.7.6.10 SHOW CREATE TABLE语法"><code class="literal">SHOW
								CREATE
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句，则可以看到表的分区组成是如何更改的：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>SHOW CREATE TABLE tr\G</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
*************************** 1。排******************** *******</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
       表：tr</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
创建表：CREATE TABLE`tr`（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  `id` int（11）DEFAULT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  `name` varchar（50）DEFAULT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  `purchase` date DEFAULT NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）ENGINE = InnoDB DEFAULT CHARSET = latin1</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
/ *！50100按范围划分（年（购买））</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
（PARTITION p0 VALUES比（1990）ENGINE = InnoDB少，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 分区p1值小于（1995）ENGINE = InnoDB，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 分区p3的价值低于（2005）ENGINE = InnoDB，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 分区p4的价值低于（2010）ENGINE = InnoDB，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 分区p5的价值低于（2015）ENGINE = InnoDB）* /</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
1排（0.00秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								当您将新行插入到已更改的表中且
							</font>
						</font><code class="literal">purchased</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">列值介于</font>
						</font><code class="literal">'1995-01-01'</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">和
							</font>
						</font><code class="literal">'2004-12-31'</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">包含</font>
							<font style="vertical-align: inherit;">之间时
							</font>
							<font style="vertical-align: inherit;">，这些行将存储在分区中</font>
						</font><code class="literal">p3</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">您可以按如下方式验证：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>INSERT INTO tr VALUES (11, 'pencil holder', '1995-07-12');</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，1行受影响（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font></font><strong class="userinput"><code>SELECT * FROM tr WHERE purchased</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;</font></font><strong class="userinput"><code>BETWEEN '1995-01-01' AND '2004-12-31';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">id | </font><font style="vertical-align: inherit;">名字| </font><font style="vertical-align: inherit;">购买|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">1 | </font><font style="vertical-align: inherit;">桌面组织者| </font><font style="vertical-align: inherit;">2003-10-15 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">11 | </font><font style="vertical-align: inherit;">笔筒| </font><font style="vertical-align: inherit;">1995-07-12 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
2行（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>ALTER TABLE tr DROP PARTITION p3;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，0行受影响（0.03秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font></font><strong class="userinput"><code>SELECT * FROM tr WHERE purchased</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;</font></font><strong class="userinput"><code>BETWEEN '1995-01-01' AND '2004-12-31';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
空集（0.00秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;"></font><code class="literal">ALTER TABLE ... DROP PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">服务器不会报告</font>
							<font style="vertical-align: inherit;">
								因此而从表中删除的行数，
							</font>
							<font style="vertical-align: inherit;">因为它等同于
							</font>
						</font><a class="link" href="sql-syntax.html#delete" title="13.2.2 DELETE语法"><code class="literal">DELETE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">查询。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								删除</font>
						</font><code class="literal">LIST</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区使用与</font>
							<font style="vertical-align: inherit;">删除</font>
							<font style="vertical-align: inherit;">分区完全相同的</font>
						</font><code class="literal">ALTER TABLE ... DROP PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语法</font>
						</font><code class="literal">RANGE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">但是，之后对表的使用有一个重要的区别：您不能再向表中插入任何具有定义已删除分区的值列表中包含的值的行。</font>
							<font style="vertical-align: inherit;">（有关</font>
							<font style="vertical-align: inherit;">示例</font>
						</font><a class="xref" href="partitioning.html#partitioning-list" title="23.2.2列表分区">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">请参见
							</font><a class="xref" href="partitioning.html#partitioning-list" title="23.2.2列表分区">
								<font style="vertical-align: inherit;">第23.2.2节“列表分区”</font>
							</a>
							<font style="vertical-align: inherit;">。）
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								要将新范围或列表分区添加到先前分区的表，请使用该</font>
						</font><code class="literal">ALTER TABLE ... ADD PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								语句。</font>
							<font style="vertical-align: inherit;">对于分区的表
							</font>
						</font><code class="literal">RANGE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，可以使用此范围将新范围添加到现有分区列表的末尾。</font>
							<font style="vertical-align: inherit;">假设您有一个包含组织成员资格数据的分区表，其定义如下：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE成员（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    fname VARCHAR（25），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lname VARCHAR（25），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    dob DATE</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
按范围划分（年（dob））（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分数p0值低于（1980），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p1值低于（1990），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p2值小于（2000）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								进一步假设成员的最低年龄是16岁。随着日历接近2015年底，您意识到您将很快接纳2000年（及之后）出生的成员。</font>
							<font style="vertical-align: inherit;">您可以修改该</font>
						</font><code class="literal">members</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">表以适应2000年至2010年出生的新成员，如下所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">ALTER TABLE成员ADD PARTITION（PARTITION p3 VALUES（2010））;
</font></font></pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								对于按范围分区的表，您可以使用仅
							</font>
						</font><code class="literal">ADD PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">将新分区添加到分区列表的高端。</font>
							<font style="vertical-align: inherit;">尝试在现有分区之间或之前以这种方式添加新分区会导致错误，如下所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>ALTER TABLE members</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
     &gt;      </font></font><strong class="userinput"><code>ADD PARTITION (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
     &gt;     </font></font><strong class="userinput"><code>PARTITION n VALUES LESS THAN (1970));</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
ERROR 1463（HY000）：价值必须严格超值»</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
   增加每个分区</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								您可以通过将第一个分区重新组织为两个新分区来解决这个问题，这两个分区分割它们之间的范围，如下所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">ALTER TABLE成员</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    重新划分p0 INTO（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分数n0值不到（1970年），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分数n1值低于（1980）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								使用</font>
						</font><a class="link" href="sql-syntax.html#show-create-table" title="13.7.6.10 SHOW CREATE TABLE语法"><code class="literal">SHOW
								CREATE TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">您可以看到该</font>
						</font><code class="literal">ALTER TABLE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句具有所需的效果：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>SHOW CREATE TABLE members\G</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
*************************** 1。排******************** *******</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
       表：成员</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
创建表：CREATE TABLE`member`（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  `id` int（11）DEFAULT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  `fname` varchar（25）DEFAULT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  `lname` varchar（25）DEFAULT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  `dob`日期DEFAULT NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）ENGINE = InnoDB DEFAULT CHARSET = latin1</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
/ *！50100按范围划分（年（dob））</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
（PARTITION n0 VALUES比（1970）发动机= InnoDB少，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 分区n1值小于（1980）ENGINE = InnoDB，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 分区p1值小于（1990）ENGINE = InnoDB，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 PARTITION p2 VALUE少于（2000）ENGINE = InnoDB，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 分区p3的价值低于（2010）ENGINE = InnoDB）* /</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
1排（0.00秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								另请参见</font>
						</font><a class="xref" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第13.1.9.1节“ALTER TABLE分区操作”</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								您还可以使用</font>
						</font><code class="literal">ALTER TABLE ... ADD
							PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">向分区的表添加新分区</font>
						</font><code class="literal">LIST</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">假设
							</font>
						</font><code class="literal">tt</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">使用以下</font>
						</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句</font>
							<font style="vertical-align: inherit;">定义
							</font>
							<font style="vertical-align: inherit;">表：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE tt（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    数据INT</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
按名单划分（数据）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PAROTION p0 VALUES IN（5,10,15），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p1值（6,12,18）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								可以添加在其中具有所述行存储一个新的分区
							</font>
						</font><code class="literal">data</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">的列值</font>
						</font><code class="literal">7</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，
							</font>
						</font><code class="literal">14</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">和</font>
						</font><code class="literal">21</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">如下所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">更改表格添加分区（（7,14,21）中的分区p2值）;
</font></font></pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								请记住，您</font>
						</font><span class="emphasis"><em>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">无法</font>
								</font>
							</em></span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">添加
							</font>
						</font><code class="literal">LIST</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">包含已包含在现有分区的值列表中的任何值的新分区。</font>
							<font style="vertical-align: inherit;">如果您尝试这样做，将导致错误：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql </font></font><strong class="userinput"><code>ALTER TABLE tt ADD PARTITION </code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
     &gt;&gt;     </font></font><strong class="userinput"><code>(PARTITION np VALUES IN (4, 8, 12));</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
ERROR 1465（HY000）：同一常数的多重定义»</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
                    在列表分区中</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								由于具有</font>
						</font><code class="literal">data</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">列值的
							</font>
							<font style="vertical-align: inherit;">任何行</font>
						</font><code class="literal">12</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">都已分配给分区
							</font>
						</font><code class="literal">p1</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，因此无法在</font>
						</font><code class="literal">tt</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">包含</font>
						</font><code class="literal">12</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								其值列表的</font>
							<font style="vertical-align: inherit;">表上创建新分区</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">要实现此目的，您可以删除
							</font>
						</font><code class="literal">p1</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，添加</font>
						</font><code class="literal">np</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">一个</font>
						</font><code class="literal">p1</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">带有修改定义</font>
							<font style="vertical-align: inherit;">的新内容</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">但是，如前所述，这会导致存储的所有数据丢失</font>
						</font><code class="literal">p1</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">- 而且通常情况下这不是您真正想要做的事情。</font>
							<font style="vertical-align: inherit;">另一种解决方案似乎是使用新分区制作表的副本，并使用将数据复制到其中
							</font>
						</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
								TABLE ...
								SELECT ...</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，然后删除旧表并重命名新表，但在处理大量数据时这可能非常耗时。</font>
							<font style="vertical-align: inherit;">在需要高可用性的情况下，这也可能不可行。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								您可以在单个</font>
						</font><code class="literal">ALTER TABLE
							... ADD PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句中</font>
							<font style="vertical-align: inherit;">添加多个分区，</font>
							<font style="vertical-align: inherit;">如下所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE员工（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  id INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  fname VARCHAR（50）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  lname VARCHAR（50）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  雇用DATE NOT NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
按比例分区（年（雇用））（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  PARITION p1 VALUES（1991），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  分区p2值低于（1996），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  分区p3价值低于（2001年），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  分区p4值低于（2005）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
ALTER TABLE员工添加分区（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p5价值低于（2010年），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p6值低于MAXVALUE</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								幸运的是，MySQL的分区实现提供了重新定义分区而不会丢失数据的方法。</font>
							<font style="vertical-align: inherit;">我们先来看几个涉及</font>
						</font><code class="literal">RANGE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								分区</font>
							<font style="vertical-align: inherit;">的简单示例</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">回想一下</font>
						</font><code class="literal">members</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">现在定义</font>
							<font style="vertical-align: inherit;">的</font>
							<font style="vertical-align: inherit;">表，如下所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>SHOW CREATE TABLE members\G</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
*************************** 1。排******************** *******</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
       表：成员</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
创建表：CREATE TABLE`member`（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  `id` int（11）DEFAULT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  `fname` varchar（25）DEFAULT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  `lname` varchar（25）DEFAULT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  `dob`日期DEFAULT NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）ENGINE = InnoDB DEFAULT CHARSET = latin1</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
/ *！50100按范围划分（年（dob））</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
（PARTITION n0 VALUES比（1970）发动机= InnoDB少，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 分区n1值小于（1980）ENGINE = InnoDB，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 分区p1值小于（1990）ENGINE = InnoDB，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 PARTITION p2 VALUE少于（2000）ENGINE = InnoDB，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 分区p3的价值低于（2010）ENGINE = InnoDB）* /</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
1排（0.00秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								假设您想将表示1960年之前出生的成员的所有行移动到单独的分区中。</font>
							<font style="vertical-align: inherit;">正如我们已经看到的，这不可能使用
							</font>
						</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
							 class="literal">ALTER
								TABLE ... ADD PARTITION</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">但是，您可以使用另一个与分区相关的扩展
							</font>
						</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
							 class="literal">ALTER
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">来完成此任务：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">ALTER TABLE成员REORGANIZE PARTITION n0 INTO（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分数s0值小于（1960），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分数s1值小于（1970）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								实际上，此命令分区拆分</font>
						</font><code class="literal">p0</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								成两个新的分区</font>
						</font><code class="literal">s0</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">和
							</font>
						</font><code class="literal">s1</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">它还</font>
						</font><code class="literal">p0</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">根据两个</font>
						</font><code class="literal">PARTITION ... VALUES
							...</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">子句中</font>
						</font><code class="literal">s0</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">包含</font>
							<font style="vertical-align: inherit;">的规则将</font>
							<font style="vertical-align: inherit;">存储的数据移动
							</font>
							<font style="vertical-align: inherit;">到新分区中</font>
							<font style="vertical-align: inherit;">，因此</font>
							<font style="vertical-align: inherit;">仅</font>
							<font style="vertical-align: inherit;">包含那些</font>
						</font><a class="link" href="functions.html#function_year"><code class="literal">YEAR(dob)</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">小于1960的</font>
							<font style="vertical-align: inherit;">记录，
							</font>
							<font style="vertical-align: inherit;">并
							</font>
						</font><code class="literal">s1</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">包含那些
							</font>
						</font><a class="link" href="functions.html#function_year"><code class="literal">YEAR(dob)</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">大于或等于1960但更少的行。比1970年。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								甲</font>
						</font><code class="literal">REORGANIZE PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">条款还可以使用用于合并相邻的分区。</font>
							<font style="vertical-align: inherit;">您可以反转上一个语句对</font>
						</font><code class="literal">members</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								表的影响，如下所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">ALTER TABLE成员REORGANIZE PARTITION s0，s1 INTO（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分数p0值小于（1970）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								使用分割或合并分区时不会丢失数据
							</font>
						</font><code class="literal">REORGANIZE PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">在执行上面的语句中，MySQL将所有的已存储在分区中的记录</font>
						</font><code class="literal">s0</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，并</font>
						</font><code class="literal">s1</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">为分区</font>
						</font><code class="literal">p0</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;"></font><code class="literal">REORGANIZE PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								这里显示了</font>
							<font style="vertical-align: inherit;">
								一般语法</font>
							<font style="vertical-align: inherit;">：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">ALTER TABLE </font></font><em class="replaceable"><code>tbl_name</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    重新分区</font></font><em class="replaceable"><code>partition_list</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    INTO（</font></font><em class="replaceable"><code>partition_definitions</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">）;
</font></font></pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								这里， </font>
						</font><em class="replaceable"><code>tbl_name</code></em>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">是分区表的名称，</font>
						</font><em class="replaceable"><code>partition_list</code></em>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								是一个逗号分隔的一个或多个要更改的现有分区的名称列表。
							</font>
						</font><em class="replaceable"><code>partition_definitions</code></em>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">是一个以逗号分隔的新分区定义列表，它遵循与</font>
						</font><em class="replaceable"><code>partition_definitions</code></em>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">使用</font>
							<font style="vertical-align: inherit;">的</font>
							<font style="vertical-align: inherit;">列表
							</font>
							<font style="vertical-align: inherit;">相同的规则
							</font>
						</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">在使用时，您不限于将多个分区合并为一个分区，或将一个分区拆分为多个分区</font>
						</font><code class="literal">REORGANIZE
							PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">例如，您可以将</font>
						</font><code class="literal">members</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">表的</font>
							<font style="vertical-align: inherit;">所有四个分区重新组织</font>
							<font style="vertical-align: inherit;">为两个，如下所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">ALTER TABLE成员REORGANIZE PARTITION p0，p1，p2，p3 INTO（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分数m0值小于（1980），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分数m1值小于（2000）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								您还可以使用</font>
						</font><code class="literal">REORGANIZE PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区的表</font>
						</font><code class="literal">LIST</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">让我们回到向列表分区</font>
						</font><code class="literal">tt</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">表</font>
							<font style="vertical-align: inherit;">添加新分区</font>
							<font style="vertical-align: inherit;">并失败的问题，因为新分区的值已经存在于其中一个现有分区的值列表中。</font>
							<font style="vertical-align: inherit;">我们可以通过添加仅包含非冲突值的分区来处理此问题，然后重新组织新分区和现有分区，以便现在存储在现有分区中的值移动到新分区：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">ALTER TABLE tt ADD PARTITION（PARTITION np VALUES IN（4,8））;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
ALTER TABLE tt重组分区p1，np INTO（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARITION p1 VALUES IN（6,18），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （4,8,12）中的分区np值</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								以下是使用</font>
						</font><code class="literal">ALTER TABLE ... REORGANIZE PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">重新分区由</font>
						</font><code class="literal">RANGE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">或</font>
							<font style="vertical-align: inherit;">分区的表</font>
							<font style="vertical-align: inherit;">时</font>
							<font style="vertical-align: inherit;">要
							</font>
							<font style="vertical-align: inherit;">记住的一些要点
							</font>
						</font><code class="literal">LIST</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">：
							</font>
						</font>
					</p>
					<div class="itemizedlist">
						<ul class="itemizedlist" style="list-style-type: disc; ">
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;"></font><code class="literal">PARTITION</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">用于确定新分区方案</font>
										<font style="vertical-align: inherit;">
											的</font>
										<font style="vertical-align: inherit;">选项遵循与</font>
									</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
											TABLE</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">语句</font>
										<font style="vertical-align: inherit;">相同的规则</font>
										<font style="vertical-align: inherit;">。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											新的</font>
									</font><code class="literal">RANGE</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">分区方案不能有任何重叠范围; </font>
										<font style="vertical-align: inherit;">新的</font>
									</font><code class="literal">LIST</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											分区方案不能具有任何重叠的值集。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;"></font><em class="replaceable"><code>partition_definitions</code></em>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">列表中</font>
										<font style="vertical-align: inherit;">
											的分区组合
										</font>
										<font style="vertical-align: inherit;">应该考虑与在中命名的组合分区相同的范围或整体值集
										</font>
									</font><em class="replaceable"><code>partition_list</code></em>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											例如，分区</font>
									</font><code class="literal">p1</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">和
										</font>
									</font><code class="literal">p2</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">一起涵盖1980年至1999年</font>
									</font><code class="literal">members</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">在本节中用作示例</font>
										<font style="vertical-align: inherit;">的</font>
										<font style="vertical-align: inherit;">表中。</font>
										<font style="vertical-align: inherit;">这两个分区的任何重组都应涵盖相同的年份范围。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											对于分区的表</font>
									</font><code class="literal">RANGE</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">，您只能重新组织相邻的分区; </font>
										<font style="vertical-align: inherit;">你不能跳过范围分区。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											例如，您无法</font>
									</font><code class="literal">members</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">使用以...开头的语句</font>
										<font style="vertical-align: inherit;">重新组织示例
										</font>
										<font style="vertical-align: inherit;">表，</font>
									</font><code class="literal">ALTER TABLE members REORGANIZE PARTITION p0,p2
										INTO ...</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">因为它</font>
									</font><code class="literal">p0</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">涵盖1970年之前</font>
									</font><code class="literal">p2</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">的年份和1990年至1999年的年份，因此这些不是相邻的分区。</font>
										<font style="vertical-align: inherit;">（</font>
									</font><code class="literal">p1</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											在这种情况下，</font>
										<font style="vertical-align: inherit;">您不能跳过分区</font>
										<font style="vertical-align: inherit;">。）
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											您不能使用</font>
									</font><code class="literal">REORGANIZE PARTITION</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">更改表使用的分区类型（例如，您不能将</font>
									</font><code class="literal">RANGE</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											分区</font>
										<font style="vertical-align: inherit;">更改</font>
										<font style="vertical-align: inherit;">为</font>
									</font><code class="literal">HASH</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">分区或反之）。</font>
										<font style="vertical-align: inherit;">您也不能使用此语句来更改分区表达式或列。</font>
										<font style="vertical-align: inherit;">要完成这些任务中的任何一个而不删除和重新创建表，您可以使用
										</font>
									</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
										 class="literal">ALTER
											TABLE ... PARTITION BY ...</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">，如下所示：
										</font>
									</font>
								</p>
								<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">ALTER TABLE成员</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    哈希分区（年（dob））</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITIONS 8;</font></font><font></font>
</pre>
							</li>
						</ul>
					</div>

				</div>
				<div class="section">
					<div class="titlepage">
						<div>
							<div>
								<h3 class="title"><a name="partitioning-management-hash-key"></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.3.2 HASH和KEY分区的管理</font>
									</font>
								</h3>

							</div>

						</div>

					</div>
					<a class="indexterm" name="idm140091573194096"></a><a class="indexterm" name="idm140091573192608"></a><a class="indexterm"
					 name="idm140091573191120"></a><a class="indexterm" name="idm140091573189632"></a>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								对于在分区设置中进行更改，通过散列或按键分区的表彼此非常相似，并且两者在与按范围或列表分区的表的方式上有很多不同。</font>
							<font style="vertical-align: inherit;">因此，本节介绍了通过散列或仅按键分区的表的修改。</font>
							<font style="vertical-align: inherit;">有关添加和删除按范围或列表分区的表分区的讨论，请参见
							</font>
						</font><a class="xref" href="partitioning.html#partitioning-management-range-list" title="23.3.1 RANGE和LIST分区的管理">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第23.3.1节“RANGE和LIST分区的管理”</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								不能删除从由分区表分区
							</font>
						</font><code class="literal">HASH</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">或</font>
						</font><code class="literal">KEY</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">在你可以从表由划分以同样的方式
							</font>
						</font><code class="literal">RANGE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">或</font>
						</font><code class="literal">LIST</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">但是，您可以</font>
							<font style="vertical-align: inherit;">
								使用</font>
							<font style="vertical-align: inherit;">合并</font>
						</font><code class="literal">HASH</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">或</font>
						</font><code class="literal">KEY</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区</font>
						</font><code class="literal">ALTER TABLE ... COALESCE
							PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">假设</font>
						</font><code class="literal">clients</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								包含有关客户端数据</font>
							<font style="vertical-align: inherit;">的</font>
							<font style="vertical-align: inherit;">表分为12个分区，如下所示创建：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE客户端（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    fname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    签署日期</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
哈希分区（月（签名））</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITIONS 12;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								要将分区数从12减少到8，请执行以下
							</font>
						</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
							 class="literal">ALTER
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>ALTER TABLE clients COALESCE PARTITION 4;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.02秒）</font></font><font></font>
</pre>
					<p>
						<code class="literal">COALESCE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">效果一样好由分区表</font>
						</font><code class="literal">HASH</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，
							</font>
						</font><code class="literal">KEY</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，</font>
						</font><code class="literal">LINEAR HASH</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，或
							</font>
						</font><code class="literal">LINEAR KEY</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">这是一个类似于前一个示例的示例，区别仅在于表被分区
							</font>
						</font><code class="literal">LINEAR KEY</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>CREATE TABLE clients_lk (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>id INT,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>fname VARCHAR(30),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>lname VARCHAR(30),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>signed DATE</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>PARTITION BY LINEAR KEY(signed)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;</font></font><strong class="userinput"><code>PARTITIONS 12;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，0行受影响（0.03秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>ALTER TABLE clients_lk COALESCE PARTITION 4;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，0行受影响（0.06秒）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
记录：0重复：0警告：0</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								以下</font>
						</font><code class="literal">COALESCE PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">数字是要合并到其余部分的分区数 - 换句话说，它是要从表中删除的分区数。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								尝试删除多于表中的分区会导致出现如下错误：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>ALTER TABLE clients COALESCE PARTITION 18;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
错误1478（HY000）：无法删除所有分区，请改用DROP TABLE</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								要将</font>
						</font><code class="literal">clients</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">表</font>
							<font style="vertical-align: inherit;">的分区数
							</font>
							<font style="vertical-align: inherit;">从12增加到18，请使用
							</font>
						</font><code class="literal">ALTER TABLE ... ADD PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">如下所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">ALTER TABLE客户端添加PARTITION PARTITIONS 6;
</font></font></pre>
				</div>
				<div class="section">
					<div class="titlepage">
						<div>
							<div>
								<h3 class="title"><a name="partitioning-management-exchange"></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.3.3使用表格交换分区和子分区</font>
									</font>
								</h3>

							</div>

						</div>

					</div>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								在MySQL 8.0中，可以使用表来交换表分区或子分区</font>
							<font style="vertical-align: inherit;">，其中
							</font>
							<font style="vertical-align: inherit;">是分区表，并且
							</font>
							<font style="vertical-align: inherit;">是</font>
							<font style="vertical-align: inherit;">要与未分区表交换</font>
							<font style="vertical-align: inherit;">的分区或子
							</font>
							<font style="vertical-align: inherit;">分区</font>
							<font style="vertical-align: inherit;">，前提是以下语句为真：
							</font>
						</font><code class="literal">ALTER
							TABLE <em class="replaceable"><code>pt</code></em> EXCHANGE PARTITION
							<em class="replaceable"><code>p</code></em> WITH TABLE
							<em class="replaceable"><code>nt</code></em></code>
						<font style="vertical-align: inherit;"></font><em class="replaceable"><code>pt</code></em>
						<font style="vertical-align: inherit;"></font><em class="replaceable"><code>p</code></em>
						<font style="vertical-align: inherit;"></font><em class="replaceable"><code>pt</code></em>
						<font style="vertical-align: inherit;"></font><em class="replaceable"><code>nt</code></em>
						<font style="vertical-align: inherit;"></font>
					</p>
					<div class="orderedlist">
						<ol class="orderedlist" type="1">
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											表</font>
									</font><em class="replaceable"><code>nt</code></em>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">本身不是分区的。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											表</font>
									</font><em class="replaceable"><code>nt</code></em>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">不是临时表。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											表的结构</font>
									</font><em class="replaceable"><code>pt</code></em>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">和
										</font>
									</font><em class="replaceable"><code>nt</code></em>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">其他方面相同。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											表不</font>
									</font><code class="literal">nt</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">包含外键引用，并且没有其他表具有引用的任何外键</font>
									</font><code class="literal">nt</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											其中没有行</font>
									</font><em class="replaceable"><code>nt</code></em>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">位于分区定义的边界之外
										</font>
									</font><em class="replaceable"><code>p</code></em>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">。</font>
										<font style="vertical-align: inherit;">如果</font>
									</font><code class="literal">WITHOUT VALIDATION</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">使用</font>
										<font style="vertical-align: inherit;">此条件不适用</font>
										<font style="vertical-align: inherit;">。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											对于</font>
									</font><code class="literal">InnoDB</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">表，两个表都使用相同的行格式。</font>
										<font style="vertical-align: inherit;">要确定</font>
									</font><code class="literal">InnoDB</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">表</font>
										<font style="vertical-align: inherit;">的行格式，请进行
										</font>
										<font style="vertical-align: inherit;">查询
										</font>
									</font><a class="link" href="information-schema.html#innodb-tables-table" title="25.39.24 INFORMATION_SCHEMA INNODB_TABLES表"><code
										 class="literal">INFORMATION_SCHEMA.INNODB_TABLES</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<code class="literal">nt</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">没有任何使用该</font>
									</font><code class="literal">DATA DIRECTORY</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">选项的</font>
										<font style="vertical-align: inherit;">分区</font>
										<font style="vertical-align: inherit;">。</font>
										<font style="vertical-align: inherit;">对于</font>
									</font><code class="literal">InnoDB</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">MySQL 8.0.14及更高版本中的表，</font>
										<font style="vertical-align: inherit;">此限制已取消</font>
										<font style="vertical-align: inherit;">。
										</font>
									</font>
								</p>
							</li>
						</ol>
					</div>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								除了</font>
						</font><a class="link" href="security.html#priv_alter"><code class="literal">ALTER</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，
							</font>
						</font><a class="link" href="security.html#priv_insert"><code class="literal">INSERT</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">和
							</font>
						</font><a class="link" href="security.html#priv_create"><code class="literal">CREATE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">通常需要的权限</font>
						</font><a class="link" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法"><code class="literal">ALTER
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								声明，你必须有
							</font>
						</font><a class="link" href="security.html#priv_drop"><code class="literal">DROP</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">执行权限
							</font>
						</font><a class="link" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法"><code class="literal">ALTER
								TABLE ...
								EXCHANGE PARTITION</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								您还应该了解以下效果
							</font>
						</font><a class="link" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法"><code class="literal">ALTER
								TABLE ...
								EXCHANGE PARTITION</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">：
							</font>
						</font>
					</p>
					<div class="itemizedlist">
						<ul class="itemizedlist" style="list-style-type: disc; ">
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											执行</font>
									</font><a class="link" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法"><code class="literal">ALTER
											TABLE ... EXCHANGE PARTITION</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">不会在分区表或要交换的表上调用任何触发器。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;"></font><code class="literal">AUTO_INCREMENT</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">交换表中的</font>
										<font style="vertical-align: inherit;">
											任何</font>
										<font style="vertical-align: inherit;">列都将重置。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											使用时，</font>
									</font><code class="literal">IGNORE</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">关键字无效</font>
									</font><code class="literal">ALTER TABLE ... EXCHANGE
										PARTITION</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">。
										</font>
									</font>
								</p>
							</li>
						</ul>
					</div>
					<p>
						<font style="vertical-align: inherit;"></font><a class="link" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法"><code
							 class="literal">ALTER TABLE ...
								EXCHANGE PARTITION</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">此处显示了</font>
							<font style="vertical-align: inherit;">
								语法
							</font>
							<font style="vertical-align: inherit;">，其中
							</font>
						</font><em class="replaceable"><code>pt</code></em>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">是分区表，
							</font>
						</font><em class="replaceable"><code>p</code></em>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">是要交换的分区（或子分区），是要与之交换</font>
						</font><em class="replaceable"><code>nt</code></em>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">的非分区表
							</font>
						</font><em class="replaceable"><code>p</code></em>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">ALTER TABLE </font></font><em class="replaceable"><code>pt</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    EXCHANGE PARTITION </font></font><em class="replaceable"><code>p</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    WITH TABLE </font></font><em class="replaceable"><code>nt</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">;
</font></font></pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								或者，您可以追加</font>
						</font><code class="literal">WITH VALIDATION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">或
							</font>
						</font><code class="literal">WITHOUT VALIDATION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">当</font>
						</font><code class="literal">WITHOUT
							VALIDATION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">被指定，
							</font>
						</font><a class="link" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法"><code class="literal">ALTER
								TABLE ...
								EXCHANGE PARTITION</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">交换分区分区表时操作不执行任何一行一行地验证，允许数据库管理员承担确保行是分区定义的范围内承担责任。</font>
						</font><code class="literal">WITH VALIDATION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								是默认值。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								可以在单个</font>
						</font><a class="link" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法"><code class="literal">ALTER
								TABLE
								EXCHANGE PARTITION</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句中</font>
							<font style="vertical-align: inherit;">与一个且仅一个非分区表交换一个且仅一个分区或子分区
							</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">要交换多个分区或子分区，请使用多个
							</font>
						</font><a class="link" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法"><code class="literal">ALTER
								TABLE
								EXCHANGE PARTITION</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句。</font>
						</font><code class="literal">EXCHANGE
							PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">可能不会与其他</font>
						</font><a class="link" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法"><code class="literal">ALTER
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">选项</font>
							<font style="vertical-align: inherit;">结合使用
							</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">分区表使用的分区和（如果适用）子分区可以是MySQL 8.0中支持的任何类型。
							</font>
						</font>
					</p>
					<h4><a name="idm140091573102944"></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">与非分区表交换分区</font>
						</font>
					</h4>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								假设</font>
						</font><code class="literal">e</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">已使用以下SQL语句创建并填充</font>
							<font style="vertical-align: inherit;">分区表</font>
							<font style="vertical-align: inherit;">：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">创建表e（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    fname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lname VARCHAR（30）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    按范围划分（id）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p0值小于（50），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p1值小于（100），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p2值小于（150），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p3值小于（MAXVALUE）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
插入电子邮件</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （1669，“吉姆”，“史密斯”），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （337，“玛丽”，“琼斯”），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （16，“弗兰克”，“白色”），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （2005年，“琳达”，“黑色”）;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								现在我们创建一个</font>
						</font><code class="literal">e</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								名为</font>
							<font style="vertical-align: inherit;">的非分区副本</font>
						</font><code class="literal">e2</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">这可以使用
							</font>
						</font><a class="link" href="programs.html#mysql" title="4.5.1 mysql  -  MySQL命令行客户端"><span class="command"><strong>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">mysql</font>
									</font>
								</strong></span></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">客户端完成，如下所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>CREATE TABLE e2 LIKE e;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，0行受影响（0.04秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>ALTER TABLE e2 REMOVE PARTITIONING;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，0行受影响（0.07秒）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
记录：0重复：0警告：0</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								您可以</font>
						</font><code class="literal">e</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								通过查询</font>
						</font><a class="link" href="information-schema.html#partitions-table" title="25.17 INFORMATION_SCHEMA PARTITIONS表"><code
							 class="literal">INFORMATION_SCHEMA.PARTITIONS</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								表</font>
							<font style="vertical-align: inherit;">来查看表</font>
							<font style="vertical-align: inherit;">中的</font>
							<font style="vertical-align: inherit;">哪些分区</font>
							<font style="vertical-align: inherit;">包含行
							</font>
							<font style="vertical-align: inherit;">，如下所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>SELECT PARTITION_NAME, TABLE_ROWS</code></strong>
           <strong class="userinput"><code>FROM INFORMATION_SCHEMA.PARTITIONS</code></strong>
           <strong class="userinput"><code>WHERE TABLE_NAME = 'e';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">PARTITION_NAME | </font><font style="vertical-align: inherit;">TABLE_ROWS |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">1 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p2 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p3 | </font><font style="vertical-align: inherit;">3 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
2行（0.00秒）</font></font><font></font>
</pre>
					<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">

						<div class="admon-title">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									注意
								</font>
							</font>
						</div>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									对于分区</font>
							</font><code class="literal">InnoDB</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">表，行计数给出在</font>
							</font><code class="literal">TABLE_ROWS</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">该列
								</font>
							</font><a class="link" href="information-schema.html#partitions-table" title="25.17 INFORMATION_SCHEMA PARTITIONS表"><code
								 class="literal">INFORMATION_SCHEMA.PARTITIONS</code></a>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									表仅是一个估计值在SQL优化使用，并不总是准确的。
								</font>
							</font>
						</p>
					</div>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								交换分区</font>
						</font><code class="literal">p0</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">表
							</font>
						</font><code class="literal">e</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">与表</font>
						</font><code class="literal">e2</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，你可以使用
							</font>
						</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
							 class="literal">ALTER
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，如下所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>ALTER TABLE e EXCHANGE PARTITION p0 WITH TABLE e2;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，0行受影响（0.04秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								更确切地说，刚刚发出的语句会导致分区中找到的任何行与表中找到的行交换。</font>
							<font style="vertical-align: inherit;">您可以</font>
						</font><a class="link" href="information-schema.html#partitions-table" title="25.17 INFORMATION_SCHEMA PARTITIONS表"><code
							 class="literal">INFORMATION_SCHEMA.PARTITIONS</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								像以前</font>
							<font style="vertical-align: inherit;">一样通过查询</font>
							<font style="vertical-align: inherit;">表</font>
							<font style="vertical-align: inherit;">来观察这是如何发生的
							</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">之前在分区中找到的表行</font>
						</font><code class="literal">p0</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">不再存在：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>SELECT PARTITION_NAME, TABLE_ROWS</code></strong>
           <strong class="userinput"><code>FROM INFORMATION_SCHEMA.PARTITIONS</code></strong>
           <strong class="userinput"><code>WHERE TABLE_NAME = 'e';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">PARTITION_NAME | </font><font style="vertical-align: inherit;">TABLE_ROWS |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p2 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p3 | </font><font style="vertical-align: inherit;">3 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
4行（0.00秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								如果查询表</font>
						</font><code class="literal">e2</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，您可以看到
							</font>
							<font style="vertical-align: inherit;">现在可以在那里找到</font>
						</font><span class="quote">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">“ </font>
							</font><span class="quote">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">缺失</font>
								</font>
							</span>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;"> ”</font>
							</font>
						</span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">行：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>SELECT * FROM e2;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ------- ------- + +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">id | </font><font style="vertical-align: inherit;">fname | </font><font style="vertical-align: inherit;">lname |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ------- ------- + +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">16 | </font><font style="vertical-align: inherit;">弗兰克| </font><font style="vertical-align: inherit;">白色|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ------- ------- + +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
1排（0.00秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								要与分区交换的表不一定必须为空。</font>
							<font style="vertical-align: inherit;">为了演示这一点，我们首先在表中插入一个新行</font>
						</font><code class="literal">e</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，确保</font>
						</font><code class="literal">p0</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">通过选择</font>
						</font><code class="literal">id</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">小于50 </font>
							<font style="vertical-align: inherit;">的</font>
							<font style="vertical-align: inherit;">列值</font>
							<font style="vertical-align: inherit;">将该行存储在分区中</font>
							<font style="vertical-align: inherit;">，</font>
							<font style="vertical-align: inherit;">然后通过查询</font>
						</font><a class="link" href="information-schema.html#partitions-table" title="25.17 INFORMATION_SCHEMA PARTITIONS表"><code
							 class="literal">PARTITIONS</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">表</font>
							<font style="vertical-align: inherit;">来验证此行
							</font>
							<font style="vertical-align: inherit;">：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">                                                          
MySQL的&gt; </font></font><strong class="userinput"><code>INSERT INTO e VALUES (41, "Michael", "Green");</code></strong>            <font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，1行受影响（0.05秒）                              </font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>SELECT PARTITION_NAME, TABLE_ROWS</code></strong>
           <strong class="userinput"><code>FROM INFORMATION_SCHEMA.PARTITIONS</code></strong>
           <strong class="userinput"><code>WHERE TABLE_NAME = 'e';            </code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +             </font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">PARTITION_NAME | </font><font style="vertical-align: inherit;">TABLE_ROWS |             </font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +             </font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">1 |             </font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">0 |             </font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p2 | </font><font style="vertical-align: inherit;">0 |             </font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p3 | </font><font style="vertical-align: inherit;">3 |             </font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +             </font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
4行（0.00秒）        </font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								现在我们再次</font>
							<font style="vertical-align: inherit;">使用与</font>
							<font style="vertical-align: inherit;">之前</font>
							<font style="vertical-align: inherit;">相同的
							</font>
							<font style="vertical-align: inherit;">语句</font>
						</font><code class="literal">p0</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">与表</font>
							<font style="vertical-align: inherit;">交换分区</font>
							<font style="vertical-align: inherit;">：
							</font>
						</font><code class="literal">e2</code>
						<font style="vertical-align: inherit;"></font><a class="link" href="sql-syntax.html#alter-table-partition-operations"
						 title="13.1.9.1 ALTER TABLE分区操作"><code class="literal">ALTER
								TABLE</code></a>
						<font style="vertical-align: inherit;"></font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>ALTER TABLE e EXCHANGE PARTITION p0 WITH TABLE e2;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.28秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								以下查询的输出显示存储在分区中</font>
						</font><code class="literal">p0</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">的表行和</font>
						</font><code class="literal">e2</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">发布</font>
						</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
							 class="literal">ALTER
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句</font>
							<font style="vertical-align: inherit;">之前
							</font>
							<font style="vertical-align: inherit;">存储在表中的表行</font>
							<font style="vertical-align: inherit;">现在已切换位置：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>SELECT * FROM e;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + ------- ------- + +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">id | </font><font style="vertical-align: inherit;">fname | </font><font style="vertical-align: inherit;">lname |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + ------- ------- + +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">16 | </font><font style="vertical-align: inherit;">弗兰克| </font><font style="vertical-align: inherit;">白色|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">1669 | </font><font style="vertical-align: inherit;">吉姆| </font><font style="vertical-align: inherit;">史密斯|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">337 | </font><font style="vertical-align: inherit;">玛丽| </font><font style="vertical-align: inherit;">琼斯|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">2005年| </font><font style="vertical-align: inherit;">琳达| </font><font style="vertical-align: inherit;">黑色|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + ------- ------- + +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
4行（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>SELECT PARTITION_NAME, TABLE_ROWS</code></strong>
           <strong class="userinput"><code>FROM INFORMATION_SCHEMA.PARTITIONS</code></strong>
           <strong class="userinput"><code>WHERE TABLE_NAME = 'e';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">PARTITION_NAME | </font><font style="vertical-align: inherit;">TABLE_ROWS |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">1 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p2 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p3 | </font><font style="vertical-align: inherit;">3 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
4行（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>SELECT * FROM e2;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + --------- + ------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">id | </font><font style="vertical-align: inherit;">fname | </font><font style="vertical-align: inherit;">lname |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + --------- + ------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">41 | </font><font style="vertical-align: inherit;">迈克尔| </font><font style="vertical-align: inherit;">绿色|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + --------- + ------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
1排（0.00秒）</font></font><font></font>
</pre>
					<h4><a name="idm140091573047600"></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">不匹配的行</font>
						</font>
					</h4>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								您应该记住，在发出</font>
						</font><a class="link" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法"><code class="literal">ALTER
								TABLE ...
								EXCHANGE PARTITION</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句</font>
							<font style="vertical-align: inherit;">之前在非分区表中找到的任何行
							</font>
							<font style="vertical-align: inherit;">必须满足它们存储在目标分区中所需的条件。</font>
							<font style="vertical-align: inherit;">否则，声明失败。</font>
							<font style="vertical-align: inherit;">要查看这是如何发生的，首先</font>
							<font style="vertical-align: inherit;">在表</font>
						</font><code class="literal">e2</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">的分区的分区定义的边界之外
							</font>
							<font style="vertical-align: inherit;">插入一行</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">例如，插入一个</font>
							<font style="vertical-align: inherit;">列值太大</font>
							<font style="vertical-align: inherit;">的行</font>
							<font style="vertical-align: inherit;">; </font>
							<font style="vertical-align: inherit;">然后，尝试再次与分区交换表：
							</font>
						</font><code class="literal">p0</code>
						<font style="vertical-align: inherit;"></font><code class="literal">e</code>
						<font style="vertical-align: inherit;"></font><code class="literal">id</code>
						<font style="vertical-align: inherit;"></font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>INSERT INTO e2 VALUES (51, "Ellen", "McDonald");</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，1行受影响（0.08秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font><span class="errortext"><font style="vertical-align: inherit;">ERROR 1707（HY000）：找到与分区不匹配的行</font></span></font><strong class="userinput"><code>ALTER TABLE e EXCHANGE PARTITION p0 WITH TABLE e2;</code></strong>
<span class="errortext"><font style="vertical-align: inherit;"></font></span>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								只有该</font>
						</font><code class="literal">WITHOUT VALIDATION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">选项</font>
							<font style="vertical-align: inherit;">才</font>
							<font style="vertical-align: inherit;">允许此操作成功：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>ALTER TABLE e EXCHANGE PARTITION p0 WITH TABLE e2 WITHOUT VALIDATION;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.02秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								当分区与包含与分区定义不匹配的行的表交换时，数据库管理员有责任修复不匹配的行，这可以使用</font>
						</font><a class="link" href="sql-syntax.html#repair-table" title="13.7.3.5 REPAIR TABLE语法"><code class="literal">REPAIR
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">或
							</font>
							<font style="vertical-align: inherit;">执行
							</font>
						</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
							 class="literal">ALTER
								TABLE ... REPAIR PARTITION</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<h4><a name="idm140091573032928"></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">在没有逐行验证的情况下交换分区</font>
						</font>
					</h4>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								为了避免在使用具有多行的表交换分区时进行耗时的验证，可以通过附加</font>
						</font><code class="literal">WITHOUT
							VALIDATION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">到
							</font>
						</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
							 class="literal">ALTER
								TABLE ... EXCHANGE PARTITION</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句</font>
							<font style="vertical-align: inherit;">来跳过逐行验证步骤</font>
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								以下示例比较了使用非分区表交换分区时的执行时间与使用和不使用验证之间的差异。</font>
							<font style="vertical-align: inherit;">分区表（表
							</font>
						</font><code class="literal">e</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">）包含两个分区，每个分区有100万行。</font>
							<font style="vertical-align: inherit;">删除表e的p0中的行，并将p0与100万行的非分区表交换。</font>
							<font style="vertical-align: inherit;">该</font>
						</font><code class="literal">WITH
							VALIDATION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">操作需要0.74秒。</font>
							<font style="vertical-align: inherit;">相比之下，该</font>
						</font><code class="literal">WITHOUT VALIDATION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">操作需要0.01秒。
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">＃在每个分区中创建一个包含100万行的分区表</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
创建表e（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    fname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lname VARCHAR（30）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    按范围划分（id）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p0值小于（1000001），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p1值小于（2000001），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; SELECT COUNT（*）FROM e;                                             </font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">COUNT（*）|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">2000000 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
1排（0.27秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
＃查看每个分区中的行</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
SELECT PARTITION_NAME，TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME ='e';</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">PARTITION_NAME | </font><font style="vertical-align: inherit;">TABLE_ROWS |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">1000000 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">1000000 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
2行（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
＃创建一个具有相同结构的非分区表，并用100万行填充它</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
创建表e2（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    fname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lname VARCHAR（30）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; SELECT COUNT（*）FROM e2;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">COUNT（*）|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">1000000 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
1排（0.24秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
＃创建另一个具有相同结构的非分区表，并用100万行填充它</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
创建表e3（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    fname VARCHAR（30），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lname VARCHAR（30）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
    <font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; SELECT COUNT（*）FROM e3;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">COUNT（*）|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">1000000 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
1排（0.25秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
＃从表e的p0中删除行</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; DELETE FROM e WHERE id &lt;1000001;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，1000000行受影响（5.55秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
＃确认分区p0中没有行</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; SELECT PARTITION_NAME，TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME ='e';</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">PARTITION_NAME | </font><font style="vertical-align: inherit;">TABLE_ROWS |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">1000000 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
2行（0.00秒）</font></font><font></font>
    <font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
＃表e的交换分区p0，表e2'WITH VALIDATION'</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; ALTER TABLE e EXCHANGE PARTITION p0 with TABLE e2 with VALIDATION;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，0行受影响（0.74秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
＃确认已使用表e2交换分区</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; SELECT PARTITION_NAME，TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME ='e';</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">PARTITION_NAME | </font><font style="vertical-align: inherit;">TABLE_ROWS |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">1000000 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">1000000 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
2行（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
＃再次从表e的p0中删除行</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; DELETE FROM e WHERE id &lt;1000001;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，1000000行受影响（5.55秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
＃确认分区p0中没有行</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; SELECT PARTITION_NAME，TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME ='e';</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">PARTITION_NAME | </font><font style="vertical-align: inherit;">TABLE_ROWS |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">1000000 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
2行（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
＃表e的交换分区p0与表e3'WITHOUT VALIDATION'</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; ALTER TABLE e EXCHANGE PARTITION p0 with TABLE e3没有验证;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.01秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
＃确认已使用表e3交换分区</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; SELECT PARTITION_NAME，TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME ='e';</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">PARTITION_NAME | </font><font style="vertical-align: inherit;">TABLE_ROWS |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">1000000 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">1000000 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
2行（0.00秒）    </font></font><font></font>
      </pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								如果使用包含与分区定义不匹配的行的表交换分区，则数据库管理员有责任修复不匹配的行，这可以使用</font>
						</font><a class="link" href="sql-syntax.html#repair-table" title="13.7.3.5 REPAIR TABLE语法"><code class="literal">REPAIR
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">或
							</font>
							<font style="vertical-align: inherit;">执行</font>
						</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
							 class="literal">ALTER
								TABLE ... REPAIR PARTITION</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<h4><a name="idm140091573017168"></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">使用非分区表交换子分区</font>
						</font>
					</h4>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								您还可以</font>
							<font style="vertical-align: inherit;">使用</font>
							<font style="vertical-align: inherit;">语句</font>
							<font style="vertical-align: inherit;">将子分区表的子分区（请参见</font>
						</font><a class="xref" href="partitioning.html#partitioning-subpartitions" title="23.2.6分区">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第23.2.6节“</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">子分区</font><a class="xref" href="partitioning.html#partitioning-subpartitions"
							 title="23.2.6分区">
								<font style="vertical-align: inherit;">”</font>
							</a>
							<font style="vertical-align: inherit;">）与非分区表进行
							</font>
							<font style="vertical-align: inherit;">交换</font>
						</font><a class="link" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法"><code class="literal">ALTER
								TABLE ...
								EXCHANGE PARTITION</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">在下面的示例中，我们首先创建一个</font>
						</font><code class="literal">es</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">由分区</font>
						</font><code class="literal">RANGE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">和子分区的
							</font>
						</font><code class="literal">KEY</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">表，按照我们的表填充此表
							</font>
						</font><code class="literal">e</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，然后创建一个空的，未分区</font>
						</font><code class="literal">es2</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">的表</font>
							<font style="vertical-align: inherit;">副本</font>
							<font style="vertical-align: inherit;">，如下所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>CREATE TABLE es (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>id INT NOT NULL,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>fname VARCHAR(30),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>lname VARCHAR(30)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION BY RANGE (id)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>SUBPARTITION BY KEY (lname)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>SUBPARTITIONS 2 (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;          </font></font><strong class="userinput"><code>PARTITION p0 VALUES LESS THAN (50),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;          </font></font><strong class="userinput"><code>PARTITION p1 VALUES LESS THAN (100),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;          </font></font><strong class="userinput"><code>PARTITION p2 VALUES LESS THAN (150),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;          </font></font><strong class="userinput"><code>PARTITION p3 VALUES LESS THAN (MAXVALUE)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（2.76秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font></font><strong class="userinput"><code>INSERT INTO es VALUES</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>(1669, "Jim", "Smith"),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>(337, "Mary", "Jones"),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>(16, "Frank", "White"),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>(2005, "Linda", "Black");</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，4行受影响（0.04秒）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
记录：4个重复：0警告：0</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>CREATE TABLE es2 LIKE es;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（1.27秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>ALTER TABLE es2 REMOVE PARTITIONING;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，0行受影响（0.70秒）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
记录：0重复：0警告：0</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								虽然我们在创建表时没有明确命名任何子分区</font>
						</font><code class="literal">es</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，但我们可以通过</font>
							<font style="vertical-align: inherit;">在从该表中选择时</font>
							<font style="vertical-align: inherit;">包含</font>
							<font style="vertical-align: inherit;">表
							</font>
							<font style="vertical-align: inherit;">的</font>
						</font><code class="literal">SUBPARTITION_NAME</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">列
							</font>
							<font style="vertical-align: inherit;">来获取这些</font>
							<font style="vertical-align: inherit;">子分区的</font>
							<font style="vertical-align: inherit;">生成名称
							</font>
							<font style="vertical-align: inherit;">，如下所示：
							</font>
						</font><a class="link" href="information-schema.html#partitions-table" title="25.17 INFORMATION_SCHEMA PARTITIONS表"><code
							 class="literal">PARTITIONS</code></a>
						<font style="vertical-align: inherit;"></font><code class="literal">INFORMATION_SCHEMA</code>
						<font style="vertical-align: inherit;"></font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>SELECT PARTITION_NAME, SUBPARTITION_NAME, TABLE_ROWS</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>FROM INFORMATION_SCHEMA.PARTITIONS</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>WHERE TABLE_NAME = 'es';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">PARTITION_NAME | </font><font style="vertical-align: inherit;">SUBPARTITION_NAME | </font><font style="vertical-align: inherit;">TABLE_ROWS |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">p0sp0 | </font><font style="vertical-align: inherit;">1 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">p0sp1 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">p1sp0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">p1sp1 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p2 | </font><font style="vertical-align: inherit;">p2sp0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p2 | </font><font style="vertical-align: inherit;">p2sp1 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p3 | </font><font style="vertical-align: inherit;">p3sp0 | </font><font style="vertical-align: inherit;">3 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p3 | </font><font style="vertical-align: inherit;">p3sp1 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
8行（0.00秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								以下
							</font>
						</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
							 class="literal">ALTER
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句将</font>
						</font><code class="literal">p3sp0</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">表</font>
						</font><code class="literal">es</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">中的</font>
							<font style="vertical-align: inherit;">子分区</font>
							<font style="vertical-align: inherit;">与非</font>
							<font style="vertical-align: inherit;">分区</font>
							<font style="vertical-align: inherit;">表</font>
							<font style="vertical-align: inherit;">进行</font>
							<font style="vertical-align: inherit;">交换
							</font>
						</font><code class="literal">es2</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>ALTER TABLE es EXCHANGE PARTITION p3sp0 WITH TABLE es2;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.29秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								您可以通过发出以下查询来验证是否已交换行：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>SELECT PARTITION_NAME, SUBPARTITION_NAME, TABLE_ROWS</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>FROM INFORMATION_SCHEMA.PARTITIONS</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>WHERE TABLE_NAME = 'es';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">PARTITION_NAME | </font><font style="vertical-align: inherit;">SUBPARTITION_NAME | </font><font style="vertical-align: inherit;">TABLE_ROWS |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">p0sp0 | </font><font style="vertical-align: inherit;">1 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p0 | </font><font style="vertical-align: inherit;">p0sp1 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">p1sp0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p1 | </font><font style="vertical-align: inherit;">p1sp1 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p2 | </font><font style="vertical-align: inherit;">p2sp0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p2 | </font><font style="vertical-align: inherit;">p2sp1 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p3 | </font><font style="vertical-align: inherit;">p3sp0 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">p3 | </font><font style="vertical-align: inherit;">p3sp1 | </font><font style="vertical-align: inherit;">0 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---------------- + ------------------- + ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
8行（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>SELECT * FROM es2;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + ------- ------- + +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">id | </font><font style="vertical-align: inherit;">fname | </font><font style="vertical-align: inherit;">lname |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + ------- ------- + +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">1669 | </font><font style="vertical-align: inherit;">吉姆| </font><font style="vertical-align: inherit;">史密斯|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">337 | </font><font style="vertical-align: inherit;">玛丽| </font><font style="vertical-align: inherit;">琼斯|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">2005年| </font><font style="vertical-align: inherit;">琳达| </font><font style="vertical-align: inherit;">黑色|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------ + ------- ------- + +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
3组（0.00秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								如果表是子分区的，则只能使用未分区的表交换表的子分区（而不是整个分区），如下所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font><span class="errortext"><font style="vertical-align: inherit;">ERROR 1704（HY000）：子分区表，使用子分区而不是分区</font></span></font><strong class="userinput"><code>ALTER TABLE es EXCHANGE PARTITION p3 WITH TABLE es2;</code></strong>
<span class="errortext"><font style="vertical-align: inherit;"></font></span>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								表结构以严格的方式进行比较; </font>
							<font style="vertical-align: inherit;">分区表和非分区表的列和索引的数量，顺序，名称和类型必须完全匹配。</font>
							<font style="vertical-align: inherit;">此外，两个表必须使用相同的存储引擎：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>CREATE TABLE es3 LIKE e;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（1.31秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>ALTER TABLE es3 REMOVE PARTITIONING;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.53秒）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
记录：0重复：0警告：0</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>SHOW CREATE TABLE es3\G</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
*************************** 1。排******************** *******</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
       表：es3</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
创建表：CREATE TABLE`es3`（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  `id` int（11）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  `fname` varchar（30）DEFAULT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  `lname` varchar（30）DEFAULT NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）ENGINE = InnoDB DEFAULT CHARSET = utf8mb4</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
1排（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>ALTER TABLE es3 ENGINE = MyISAM;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.15秒）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
记录：0重复：0警告：0</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font><span class="errortext"><font style="vertical-align: inherit;">ERROR 1497（HY000）：在此版本的MySQL中不允许分区中的处理程序组合</font></span></font><strong class="userinput"><code>ALTER TABLE es EXCHANGE PARTITION p3sp0 WITH TABLE es3;</code></strong>
<span class="errortext"><font style="vertical-align: inherit;"></font></span>
</pre>
				</div>
				<div class="section">
					<div class="titlepage">
						<div>
							<div>
								<h3 class="title"><a name="partitioning-maintenance"></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.3.4分区的维护</font>
									</font>
								</h3>

							</div>

						</div>

					</div>
					<a class="indexterm" name="idm140091572963520"></a><a class="indexterm" name="idm140091572962032"></a><a class="indexterm"
					 name="idm140091572960544"></a><a class="indexterm" name="idm140091572959056"></a><a class="indexterm" name="idm140091572957568"></a><a
					 class="indexterm" name="idm140091572956080"></a><a class="indexterm" name="idm140091572954592"></a><a class="indexterm"
					 name="idm140091572953104"></a>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								可以使用用于此类目的的SQL语句对分区表执行许多表和分区维护任务。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								分区表的表维护可以使用语句来实现</font>
						</font><a class="link" href="sql-syntax.html#check-table" title="13.7.3.2检查表语法"><code class="literal">CHECK TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，
							</font>
						</font><a class="link" href="sql-syntax.html#optimize-table" title="13.7.3.4 OPTIMIZE TABLE语法"><code class="literal">OPTIMIZE
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，
							</font>
						</font><a class="link" href="sql-syntax.html#analyze-table" title="13.7.3.1 ANALYZE TABLE语法"><code class="literal">ANALYZE
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，和
							</font>
						</font><a class="link" href="sql-syntax.html#repair-table" title="13.7.3.5 REPAIR TABLE语法"><code class="literal">REPAIR
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，被支撑为分区表。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								您可以使用许多扩展来
							</font>
						</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
							 class="literal">ALTER
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">直接在一个或多个分区上执行此类型的操作，如以下列表中所述：
							</font>
						</font>
					</p>
					<div class="itemizedlist">
						<ul class="itemizedlist" style="list-style-type: disc; ">
							<li class="listitem">
								<p><b>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">重建分区。&nbsp;</font>
										</font>
									</b>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											重建分区; </font>
										<font style="vertical-align: inherit;">这与删除存储在分区中的所有记录，然后重新插入它们具有相同的效果。</font>
										<font style="vertical-align: inherit;">这可用于碎片整理。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											例：
										</font>
									</font>
								</p>
								<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">ALTER TABLE t1 REBUILD PARTITION p0，p1;
</font></font></pre>
							</li>
							<li class="listitem">
								<p><b>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">优化分区。&nbsp;</font>
										</font>
									</b>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											如果已经从一个分区删除大量行的，或者如果你已与可变长度行许多变化，以一个分区表（即，具有</font>
									</font><a class="link" href="data-types.html#char" title="11.4.1 CHAR和VARCHAR类型"><code class="literal">VARCHAR</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">，
										</font>
									</font><a class="link" href="data-types.html#blob" title="11.4.3 BLOB和TEXT类型"><code class="literal">BLOB</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">或
										</font>
									</font><a class="link" href="data-types.html#blob" title="11.4.3 BLOB和TEXT类型"><code class="literal">TEXT</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">列），可以使用
										</font>
									</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
										 class="literal">ALTER
											TABLE ... OPTIMIZE PARTITION</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">以回收任何未使用的空间和整理分区数据文件。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											例：
										</font>
									</font>
								</p>
								<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">ALTER TABLE t1 OPTIMIZE PARTITION p0，p1;
</font></font></pre>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											使用</font>
									</font><code class="literal">OPTIMIZE PARTITION</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">给定分区上相当于跑步</font>
									</font><code class="literal">CHECK
										PARTITION</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">，</font>
									</font><code class="literal">ANALYZE PARTITION</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">和</font>
									</font><code class="literal">REPAIR PARTITION</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">在该分区上。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											一些MySQL存储引擎，包括
										</font>
									</font><a class="link" href="innodb-storage-engine.html" title="第15章InnoDB存储引擎"><code class="literal">InnoDB</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">，不支持每分区优化; </font>
										<font style="vertical-align: inherit;">在这些情况下，
										</font>
									</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
										 class="literal">ALTER
											TABLE ... OPTIMIZE PARTITION</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">分析并重建整个表，并发出适当的警告。</font>
										<font style="vertical-align: inherit;">（Bug＃11751825，Bug＃42822）使用</font>
									</font><code class="literal">ALTER TABLE
										... REBUILD PARTITION</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">而</font>
									</font><code class="literal">ALTER TABLE ...
										ANALYZE PARTITION</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">不是避免此问题。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p><b>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">分析分区。&nbsp;</font>
										</font>
									</b>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											这将读取并存储分区的密钥分发。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											例：
										</font>
									</font>
								</p>
								<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">ALTER TABLE t1 ANALYZE PARTITION p3;
</font></font></pre>
							</li>
							<li class="listitem">
								<p><b>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">修复分区。&nbsp;</font>
										</font>
									</b>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											这会修复损坏的分区。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											例：
										</font>
									</font>
								</p>
								<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">ALTER TABLE t1 REPAIR PARTITION p0，p1;
</font></font></pre>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											通常，</font>
									</font><code class="literal">REPAIR PARTITION</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">当分区包含重复键错误时失败。</font>
										<font style="vertical-align: inherit;">您可以使用
										</font>
									</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
										 class="literal">ALTER
											IGNORE TABLE</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">此选项，在这种情况下，由于存在重复键而无法移动的所有行都将从分区中删除（Bug＃16900947）。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p><b>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">检查分区。&nbsp;</font>
										</font>
									</b>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											您可以使用</font>
									</font><code class="literal">CHECK TABLE</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">与非分区表</font>
										<font style="vertical-align: inherit;">一样的方式检查分区是否存在错误</font>
										<font style="vertical-align: inherit;">。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											例：
										</font>
									</font>
								</p>
								<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">ALTER TABLE trb3检查分区p1;
</font></font></pre>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											此命令将告诉您</font>
									</font><code class="literal">p1</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">表</font>
										<font style="vertical-align: inherit;">中分区</font>
										<font style="vertical-align: inherit;">中
										</font>
										<font style="vertical-align: inherit;">的数据或索引</font>
									</font><code class="literal">t1</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">是否已损坏。</font>
										<font style="vertical-align: inherit;">如果是这种情况，请使用
										</font>
									</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
										 class="literal">ALTER
											TABLE ... REPAIR PARTITION</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">修复分区。
										</font>
									</font>
								</p>
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											通常，</font>
									</font><code class="literal">CHECK PARTITION</code>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">当分区包含重复键错误时失败。</font>
										<font style="vertical-align: inherit;">您可以使用
										</font>
									</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
										 class="literal">ALTER
											IGNORE TABLE</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">此选项，在这种情况下，该语句将返回找到重复键冲突的分区中每行的内容。</font>
										<font style="vertical-align: inherit;">仅报告表的分区表达式中的列的值。</font>
										<font style="vertical-align: inherit;">（缺陷＃16900947）
										</font>
									</font>
								</p>
							</li>
						</ul>
					</div>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								刚刚显示的列表中的每个语句也支持关键字</font>
						</font><code class="literal">ALL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">代替分区名称列表。</font>
							<font style="vertical-align: inherit;">使用</font>
						</font><code class="literal">ALL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">使语句作用于表中的所有分区。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								您还可以使用截断分区
							</font>
						</font><a class="link" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法"><code class="literal">ALTER
								TABLE ...
								TRUNCATE PARTITION</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">此语句可用于从一个或多个分区中</font>
						</font><a class="link" href="sql-syntax.html#truncate-table" title="13.1.37 TRUNCATE TABLE语法"><code class="literal">TRUNCATE
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">删除所有行，其</font>
							<font style="vertical-align: inherit;">方式与</font>
							<font style="vertical-align: inherit;">从表</font>
							<font style="vertical-align: inherit;">中</font>
							<font style="vertical-align: inherit;">删除所有行的</font>
							<font style="vertical-align: inherit;">方式非常相似</font>
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p>
						<a class="link" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法"><code class="literal">ALTER TABLE
								...
								TRUNCATE PARTITION ALL</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;"> 截断表中的所有分区。
							</font>
						</font>
					</p>
				</div>
				<div class="section">
					<div class="titlepage">
						<div>
							<div>
								<h3 class="title"><a name="partitioning-info"></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.3.5获取分区信息</font>
									</font>
								</h3>

							</div>

						</div>

					</div>
					<a class="indexterm" name="idm140091572897168"></a><a class="indexterm" name="idm140091572896112"></a><a class="indexterm"
					 name="idm140091572895024"></a><a class="indexterm" name="idm140091572893936"></a>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								本节讨论获取有关现有分区的信息，这可以通过多种方式完成。</font>
							<font style="vertical-align: inherit;">获得此类信息的方法包括：
							</font>
						</font>
					</p>
					<div class="itemizedlist">
						<ul class="itemizedlist" style="list-style-type: disc; ">
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											使用该</font>
									</font><a class="link" href="sql-syntax.html#show-create-table" title="13.7.6.10 SHOW CREATE TABLE语法"><code
										 class="literal">SHOW CREATE TABLE</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											语句查看创建分区表时使用的分区子句。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											使用该</font>
									</font><a class="link" href="sql-syntax.html#show-table-status" title="13.7.6.36 SHOW TABLE STATUS语法"><code
										 class="literal">SHOW TABLE STATUS</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											语句确定表是否已分区。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											查询
										</font>
									</font><a class="link" href="information-schema.html#partitions-table" title="25.17 INFORMATION_SCHEMA PARTITIONS表"><code
										 class="literal">INFORMATION_SCHEMA.PARTITIONS</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											表格。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											使用该语句
										</font>
									</font><a class="link" href="sql-syntax.html#explain" title="13.8.2 EXPLAIN语法"><code class="literal">EXPLAIN
											SELECT</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">查看给定的分区
										</font>
									</font><a class="link" href="sql-syntax.html#select" title="13.2.10 SELECT语法"><code class="literal">SELECT</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">。
										</font>
									</font>
								</p>
							</li>
						</ul>
					</div>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								从MySQL 8.0.16开始，当对分区表进行插入，删除或更新时，二进制日志会记录有关分区和（如果有）行事件发生的子分区的信息。</font>
							<font style="vertical-align: inherit;">即使涉及的表相同，也会为在不同分区或子分区中进行的修改创建新的行事件。</font>
							<font style="vertical-align: inherit;">因此，如果事务涉及三个分区或子分区，则会生成三个行事件。</font>
							<font style="vertical-align: inherit;">对于更新事件，为</font>
						</font><span class="quote">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">“ </font>
							</font><span class="quote">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">之前</font>
								</font>
							</span>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;"> ”</font>
							</font>
						</span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">图像和</font>
						</font><span class="quote">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">“ </font>
							</font><span class="quote">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">之后</font>
								</font>
							</span>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;"> ”</font>
							</font>
						</span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">图像</font>
							<font style="vertical-align: inherit;">记录分区信息</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">如果指定</font>
						</font><code class="literal">-v</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">或，
							</font>
							<font style="vertical-align: inherit;">则显示分区信息</font>
						</font><code class="literal">--verbose</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">使用</font>
						</font><a class="link" href="programs.html#mysqlbinlog" title="4.6.8 mysqlbinlog  - 处理二进制日志文件的实用程序"><span class="command"><strong>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">mysqlbinlog</font>
									</font>
								</strong></span></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">查看二进制日志时的选项</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">仅在使用基于行的日志记录时记录分区信息（</font>
						</font><a class="link" href="replication.html#sysvar_binlog_format"><code class="literal">binlog_format=ROW</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">）。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								如本章其他部分所述，
							</font>
						</font><a class="link" href="sql-syntax.html#show-create-table" title="13.7.6.10 SHOW CREATE TABLE语法"><code class="literal">SHOW
								CREATE TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">在其输出中包含</font>
						</font><code class="literal">PARTITION BY</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">用于创建分区表</font>
							<font style="vertical-align: inherit;">的</font>
							<font style="vertical-align: inherit;">子句。</font>
							<font style="vertical-align: inherit;">例如：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>SHOW CREATE TABLE trb3\G</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
*************************** 1。排******************** *******</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
       表：trb3</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
创建表：CREATE TABLE`trb3`（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  `id` int（11）DEFAULT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  `name` varchar（50）DEFAULT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  `purchase` date DEFAULT NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）ENGINE = InnoDB DEFAULT CHARSET = utf8mb4</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
/ *！50100按范围划分（年（购买））</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
（PARTITION p0 VALUES比（1990）ENGINE = InnoDB少，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 分区p1值小于（1995）ENGINE = InnoDB，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 PARTITION p2 VALUE少于（2000）ENGINE = InnoDB，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 分区p3值低于（2005）ENGINE = InnoDB）* /</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
0行（0.00秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;"></font><a class="link" href="sql-syntax.html#show-table-status" title="13.7.6.36 SHOW TABLE STATUS语法"><code
							 class="literal">SHOW TABLE STATUS</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								除了</font>
						</font><code class="literal">Create_options</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">列包含字符串</font>
							<font style="vertical-align: inherit;">之外，分区表</font>
							<font style="vertical-align: inherit;">
								的输出与非</font>
							<font style="vertical-align: inherit;">分区表</font>
							<font style="vertical-align: inherit;">的输出</font>
							<font style="vertical-align: inherit;">相同</font>
						</font><code class="literal">partitioned</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">该
							</font>
						</font><code class="literal">Engine</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">列包含表的所有分区使用的存储引擎的名称。</font>
							<font style="vertical-align: inherit;">（</font>
							<font style="vertical-align: inherit;">有关此语句的更多信息</font>
						</font><a class="xref" href="sql-syntax.html#show-table-status" title="13.7.6.36 SHOW TABLE STATUS语法">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">请参见
							</font><a class="xref" href="sql-syntax.html#show-table-status" title="13.7.6.36 SHOW TABLE STATUS语法">
								<font style="vertical-align: inherit;">第13.7.6.36节“SHOW TABLE STATUS语法”</font>
							</a>
							<font style="vertical-align: inherit;">。）
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								您还可以从中获取有关分区的信息
							</font>
						</font><code class="literal">INFORMATION_SCHEMA</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，其中包含
							</font>
						</font><a class="link" href="information-schema.html#partitions-table" title="25.17 INFORMATION_SCHEMA PARTITIONS表"><code
							 class="literal">PARTITIONS</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">表。</font>
							<font style="vertical-align: inherit;">请参见
							</font>
						</font><a class="xref" href="information-schema.html#partitions-table" title="25.17 INFORMATION_SCHEMA PARTITIONS表">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第25.17节“INFORMATION_SCHEMA PARTITIONS表”</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p><a class="indexterm" name="idm140091572863152"></a><a class="indexterm" name="idm140091572861664"></a>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								可以使用确定给定</font>
						</font><a class="link" href="sql-syntax.html#select" title="13.2.10 SELECT语法"><code class="literal">SELECT</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">查询
							</font>
							<font style="vertical-align: inherit;">中涉及分区表的哪些分区
							</font>
						</font><a class="link" href="sql-syntax.html#explain" title="13.8.2 EXPLAIN语法"><code class="literal">EXPLAIN</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">该
							</font>
						</font><code class="literal">partitions</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">列
							</font>
						</font><a class="link" href="sql-syntax.html#explain" title="13.8.2 EXPLAIN语法"><code class="literal">EXPLAIN</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">输出列出了哪些记录将被查询匹配的分区。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								假设</font>
						</font><code class="literal">trb1</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">创建并填充</font>
							<font style="vertical-align: inherit;">表</font>
							<font style="vertical-align: inherit;">，如下所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE trb1（id INT，名称VARCHAR（50），购买日期）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    按范围划分（id）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p0值小于（3），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p1值小于（7），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p2值小于（9），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p3值低于（11）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    ）;</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
插入trb1值</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （1，'桌面组织者'，'2003-10-15'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （2，'CD播放器'，'1993-11-05'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （3，'电视机'，'1996-03-10'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （4，'书柜'，'1982-01-10'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （5，'运动自行车'，'2004-05-09'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （6，'沙发'，'1987-06-05'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （7，'爆米花机'，'2001-11-22'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （8，'水族馆'，'1992-08-04'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （9，'学习桌'，'1984-09-16'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （10，'熔岩灯'，'1998-12-25'）;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								您可以查看查询中使用的分区
							</font>
						</font><code class="literal">SELECT * FROM trb1;</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，如下所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>EXPLAIN SELECT * FROM trb1\G</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
*************************** 1。排******************** *******</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
           id：1</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  select_type：SIMPLE</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        表：trb1</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
   分区：p0，p1，p2，p3</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
         类型：全部</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
possible_keys：NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
          key：NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
      key_len：NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
          ref：NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
         行：10</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        额外：使用filesort</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								在这种情况下，搜索所有四个分区。</font>
							<font style="vertical-align: inherit;">但是，当查询中添加了使用分区键的限制条件时，您可以看到只扫描包含匹配值的分区，如下所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>EXPLAIN SELECT * FROM trb1 WHERE id &lt; 5\G</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
*************************** 1。排******************** *******</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
           id：1</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  select_type：SIMPLE</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        表：trb1</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
   分区：p0，p1</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
         类型：全部</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
possible_keys：NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
          key：NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
      key_len：NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
          ref：NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
         行：10</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        额外：使用在哪里</font></font><font></font>
</pre>
					<p>
						<a class="link" href="sql-syntax.html#explain" title="13.8.2 EXPLAIN语法"><code class="literal">EXPLAIN </code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;"> 还提供有关使用的密钥和可能的密钥的信息：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>ALTER TABLE trb1 ADD PRIMARY KEY (id);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，10行受影响（0.03秒）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
记录：10个重复：0个警告：0</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>EXPLAIN SELECT * FROM trb1 WHERE id &lt; 5\G</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
*************************** 1。排******************** *******</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
           id：1</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  select_type：SIMPLE</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        表：trb1</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
   分区：p0，p1</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
         类型：范围</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
possible_keys：PRIMARY</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
          关键：主要</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
      key_len：4</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
          ref：NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
         行：7</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        额外：使用在哪里</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								If </font>
						</font><a class="link" href="sql-syntax.html#explain" title="13.8.2 EXPLAIN语法"><code class="literal">EXPLAIN</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">用于检查针对非分区表的查询，不会产生错误，但</font>
						</font><code class="literal">partitions</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">列</font>
							<font style="vertical-align: inherit;">的值</font>
							<font style="vertical-align: inherit;">始终为
							</font>
						</font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								所述</font>
						</font><code class="literal">rows</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">的柱
							</font>
						</font><a class="link" href="sql-syntax.html#explain" title="13.8.2 EXPLAIN语法"><code class="literal">EXPLAIN</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">的输出显示表中的行的总数。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								另请参见</font>
						</font><a class="xref" href="sql-syntax.html#explain" title="13.8.2 EXPLAIN语法">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第13.8.2节“EXPLAIN语法”</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
				</div>

			</div>
			<div class="section">
				<div class="titlepage">
					<div>
						<div>
							<h2 class="title" style="clear: both"><a name="partitioning-pruning"></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">23.4分区修剪</font>
								</font>
							</h2>

						</div>

					</div>

				</div>
				<a class="indexterm" name="idm140091572833792"></a><a class="indexterm" name="idm140091572832720"></a>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							称为</font>
					</font><span class="firstterm">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区修剪</font>
						</font>
					</span>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">的优化</font>
						<font style="vertical-align: inherit;">基于相对简单的概念，可以将其描述为</font>
					</font><span class="quote">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">“ </font>
						</font><span class="quote">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">不扫描不存在匹配值的分区</font>
							</font>
						</span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;"> ”</font>
						</font>
					</span>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">假设</font>
					</font><code class="literal">t1</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">此语句创建</font>
						<font style="vertical-align: inherit;">了分区表
						</font>
						<font style="vertical-align: inherit;">：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE t1（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    fname VARCHAR（50）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lname VARCHAR（50）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    region_code TINYINT UNSIGNED NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    dob DATE NOT NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
按范围划分（region_code）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p0值小于（64），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p1值小于（128），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p2值小于（192），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p3值比MAXVALUE低</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							假设您希望从以下</font>
					</font><a class="link" href="sql-syntax.html#select" title="13.2.10 SELECT语法"><code class="literal">SELECT</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">语句中</font>
						<font style="vertical-align: inherit;">获得结果
						</font>
						<font style="vertical-align: inherit;">：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">SELECT fname，lname，region_code，dob</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    从t1</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    WHERE region_code&gt; 125 AND region_code &lt;130;</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							这是很容易看出，没有行的哪些应该被返回是在任一分区的</font>
					</font><code class="literal">p0</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或
						</font>
					</font><code class="literal">p3</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">; </font>
						<font style="vertical-align: inherit;">也就是说，我们只需要在分区中搜索
						</font>
					</font><code class="literal">p1</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">并</font>
					</font><code class="literal">p2</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">找到匹配的行。</font>
						<font style="vertical-align: inherit;">通过限制搜索，可以比查找表中的所有分区花费更少的时间和精力来查找匹配的行。</font>
						<font style="vertical-align: inherit;">这种</font>
					</font><span class="quote">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">“ </font>
						</font><span class="quote">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">切掉</font>
							</font>
						</span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;"> ”</font>
						</font>
					</span>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">不需要的分区称为
						</font>
					</font><span class="firstterm">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">修剪</font>
						</font>
					</span>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">当优化器在执行此查询时可以使用分区修剪时，查询的执行速度可以比针对包含相同列定义和数据的非分区表的相同查询快一个数量级。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							只要</font>
					</font><code class="literal">WHERE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">条件可以减少到以下两种情况之一，</font>
						<font style="vertical-align: inherit;">优化器就可以执行修剪
						</font>
						<font style="vertical-align: inherit;">：
						</font>
					</font>
				</p>
				<div class="itemizedlist">
					<ul class="itemizedlist" style="list-style-type: disc; ">
						<li class="listitem">
							<p>
								<code class="literal"><em class="replaceable"><code>partition_column</code></em> =
									<em class="replaceable"><code>constant</code></em></code>
							</p>
						</li>
						<li class="listitem">
							<p>
								<code class="literal"><em class="replaceable"><code>partition_column</code></em> IN
									(<em class="replaceable"><code>constant1</code></em>,
									<em class="replaceable"><code>constant2</code></em>, ...,
									<em class="replaceable"><code>constantN</code></em>)</code>
							</p>
						</li>
					</ul>
				</div>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							在第一种情况下，优化器只是评估给定值的分区表达式，确定哪个分区包含该值，并仅扫描该分区。</font>
						<font style="vertical-align: inherit;">在许多情况下，等号可以与另一个算术比较来代替，包括</font>
					</font><code class="literal">&lt;</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，</font>
					</font><code class="literal">&gt;</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，
						</font>
					</font><code class="literal">&lt;=</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，</font>
					</font><code class="literal">&gt;=</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，和
						</font>
					</font><code class="literal">&lt;&gt;</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。</font>
					</font><code class="literal">BETWEEN</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">在</font>
					</font><code class="literal">WHERE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">子句中</font>
						<font style="vertical-align: inherit;">使用的一些查询
						</font>
						<font style="vertical-align: inherit;">也可以利用分区修剪。</font>
						<font style="vertical-align: inherit;">请参阅本节后面的示例。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							在第二种情况下，优化器评估列表中每个值的分区表达式，创建匹配分区的列表，然后仅扫描此分区列表中的分区。
						</font>
					</font>
				</p>
				<p>
					<a class="link" href="sql-syntax.html#select" title="13.2.10 SELECT语法"><code class="literal">SELECT</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，
						</font>
					</font><a class="link" href="sql-syntax.html#delete" title="13.2.2 DELETE语法"><code class="literal">DELETE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">和
						</font>
					</font><a class="link" href="sql-syntax.html#update" title="13.2.12 UPDATE语法"><code class="literal">UPDATE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">语句支持分区修剪。</font>
						<font style="vertical-align: inherit;">一个</font>
					</font><a class="link" href="sql-syntax.html#insert" title="13.2.6 INSERT语法"><code class="literal">INSERT</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">声明还访问每个插入的行只有一个分区; </font>
						<font style="vertical-align: inherit;">即使对于分区的表</font>
					</font><code class="literal">HASH</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或者
						</font>
					</font><code class="literal">KEY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">当前未在输出中显示</font>
						<font style="vertical-align: inherit;">的表也是如此</font>
					</font><a class="link" href="sql-syntax.html#explain" title="13.8.2 EXPLAIN语法"><code class="literal">EXPLAIN</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							修剪也可以应用于短范围，优化程序可以将其转换为等效的值列表。</font>
						<font style="vertical-align: inherit;">例如，在前面的示例中，</font>
					</font><code class="literal">WHERE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">子句可以转换为</font>
					</font><code class="literal">WHERE region_code IN (126, 127, 128,
						129)</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">然后，优化器可以确定列表中的前两个值是在分区中找到的
						</font>
					</font><code class="literal">p1</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，其余两个值在分区中
						</font>
					</font><code class="literal">p2</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，而其他分区不包含相关值，因此不需要搜索匹配的行。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							优化器还可以针对</font>
					</font><code class="literal">WHERE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">涉及使用</font>
					</font><code class="literal">RANGE COLUMNS</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或</font>
					</font><code class="literal">LIST
						COLUMNS</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">分区的</font>
						<font style="vertical-align: inherit;">表的多个列上的前述类型的比较的条件
						</font>
						<font style="vertical-align: inherit;">执行修剪
						</font>
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p><a class="indexterm" name="idm140091572792160"></a>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							只要分区表达式由等式或可以减少到一组等式的范围组成，或者当分区表达式表示增大或减小关系时，就可以应用这种类型的优化。</font>
						<font style="vertical-align: inherit;">当分区表达式使用</font>
						<font style="vertical-align: inherit;">或
						</font>
						<font style="vertical-align: inherit;">函数</font>
						<font style="vertical-align: inherit;">时，</font>
						<font style="vertical-align: inherit;">也可以对分区</font>
					</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或
						</font>
					</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATETIME</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">列
						</font>
						<font style="vertical-align: inherit;">上的表应用修剪
						</font>
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">当分区表达式使用该</font>
						<font style="vertical-align: inherit;">函数</font>
						<font style="vertical-align: inherit;">时，也可以对这些表应用修剪</font>
						<font style="vertical-align: inherit;">。
						</font>
					</font><a class="link" href="functions.html#function_year"><code class="literal">YEAR()</code></a>
					<font style="vertical-align: inherit;"></font><a class="link" href="functions.html#function_to-days"><code class="literal">TO_DAYS()</code></a>
					<font style="vertical-align: inherit;"></font><a class="link" href="functions.html#function_to-seconds"><code
						 class="literal">TO_SECONDS()</code></a>
					<font style="vertical-align: inherit;"></font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							假设</font>
						<font style="vertical-align: inherit;">使用此处显示的语句创建</font>
					</font><code class="literal">t2</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">在</font>
					</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">列</font>
						<font style="vertical-align: inherit;">上分区的
						</font>
						<font style="vertical-align: inherit;">表</font>
						<font style="vertical-align: inherit;">：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">创建表t2（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    fname VARCHAR（50）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lname VARCHAR（50）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    region_code TINYINT UNSIGNED NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    dob DATE NOT NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
按范围划分（年（dob））（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分数d0值小于（1970），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区d1值低于（1975），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区d2值低于（1980），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区d3的价值低于（1985年），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区d4的价值低于（1990年），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区d5的价值低于（2000年），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区d6的价值低于（2005年），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区d7的值低于MAXVALUE</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							以下使用的语句</font>
					</font><code class="literal">t2</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">可以使用分区修剪：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">SELECT * FROM t2 WHERE dob ='1982-06-23';</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
UPDATE t2 SET region_code = 8在'1991-02-15'和'1997-04-25'之间做什么？</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
DELETE FROM t2 WHERE dob&gt; ='1984-06-21'ANDb &lt;='1999-06-21'</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							在最后一个语句的情况下，优化器也可以如下操作：
						</font>
					</font>
				</p>
				<div class="orderedlist">
					<ol class="orderedlist" type="1">
						<li class="listitem">
							<p>
								<span class="emphasis"><em>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">找到包含范围低端的分区</font>
										</font>
									</em></span>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
							<p>
								<a class="link" href="functions.html#function_year"><code class="literal">YEAR('1984-06-21')</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">产生值</font>
								</font><code class="literal">1984</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，在分区中找到
									</font>
								</font><code class="literal">d3</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<span class="emphasis"><em>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">找到包含范围高端的分区</font>
										</font>
									</em></span>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
							<p>
								<a class="link" href="functions.html#function_year"><code class="literal">YEAR('1999-06-21')</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">评估为
									</font>
								</font><code class="literal">1999</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，在分区中找到
									</font>
								</font><code class="literal">d5</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<span class="emphasis"><em>
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">仅扫描这两个分区以及可能位于它们之间的任何分区</font>
										</font>
									</em></span>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										在这种情况下，这意味着只有分区
									</font>
								</font><code class="literal">d3</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，</font>
								</font><code class="literal">d4</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">以及
									</font>
								</font><code class="literal">d5</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">被扫描。</font>
									<font style="vertical-align: inherit;">可以安全地忽略其余分区（并忽略）。
									</font>
								</font>
							</p>
						</li>
					</ol>
				</div>
				<div class="important" style="margin-left: 0.5in; margin-right: 0.5in;">
					<div class="admon-title">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								重要
							</font>
						</font>
					</div>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								在</font>
							<font style="vertical-align: inherit;">对分区表的语句</font>
							<font style="vertical-align: inherit;">的</font>
							<font style="vertical-align: inherit;">条件中</font>
							<font style="vertical-align: inherit;">引用的</font>
							<font style="vertical-align: inherit;">
								无效</font>
						</font><code class="literal">DATE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">和</font>
						</font><code class="literal">DATETIME</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">值</font>
						</font><code class="literal">WHERE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">被视为
							</font>
						</font><code class="literal">NULL</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">这意味着诸如</font>
							<font style="vertical-align: inherit;">不返回任何值</font>
							<font style="vertical-align: inherit;">的查询
							</font>
							<font style="vertical-align: inherit;">（参见Bug＃40972）。
							</font>
						</font><code class="literal">SELECT * FROM
							<em class="replaceable"><code>partitioned_table</code></em> WHERE
							<em class="replaceable"><code>date_column</code></em> &lt;
							'2008-12-00'</code>
						<font style="vertical-align: inherit;"></font>
					</p>
				</div>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							到目前为止，我们只查看了使用</font>
					</font><code class="literal">RANGE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">分区的</font>
						<font style="vertical-align: inherit;">示例
						</font>
						<font style="vertical-align: inherit;">，但修剪也可以应用于其他分区类型。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							考虑一个分区的表</font>
					</font><code class="literal">LIST</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，其中分区表达式增加或减少，例如</font>
					</font><code class="literal">t3</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">此处显示</font>
						<font style="vertical-align: inherit;">的表</font>
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">（在此示例中，为简洁起见，我们假设
						</font>
					</font><code class="literal">region_code</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">列限制在1到10之间，包括1和10之间的值。）
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">创建表t3（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    fname VARCHAR（50）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lname VARCHAR（50）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    region_code TINYINT UNSIGNED NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    dob DATE NOT NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
按列表分区（region_code）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （1，3）中的分区r0值，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区r1值（（2,5,8），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区r2值（4,9），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分数r3值（6,7,10）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							对于诸如语句</font>
					</font><code class="literal">SELECT * FROM t3 WHERE
						region_code BETWEEN 1 AND 3</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，优化器确定在其中划分所述值1,2，和3中发现（</font>
					</font><code class="literal">r0</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">和</font>
					</font><code class="literal">r1</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">），并跳过其余的（</font>
					</font><code class="literal">r2</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">和</font>
					</font><code class="literal">r3</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">）。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							对于由</font>
					</font><code class="literal">HASH</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">or
						</font>
					</font><code class="literal">[LINEAR] KEY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">分区的</font>
						<font style="vertical-align: inherit;">表，</font>
						<font style="vertical-align: inherit;">在</font>
					</font><code class="literal">WHERE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">子句</font>
					</font><code class="literal">=</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">对分区表达式中使用的列使用</font>
						<font style="vertical-align: inherit;">简单</font>
						<font style="vertical-align: inherit;">关系的</font>
						<font style="vertical-align: inherit;">情况下，也可以进行分区修剪</font>
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">考虑一个像这样创建的表：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">创建表t4（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    fname VARCHAR（50）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lname VARCHAR（50）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    region_code TINYINT UNSIGNED NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    dob DATE NOT NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITION BY KEY（region_code）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITIONS 8;</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							可以修剪将列值与常量进行比较的语句：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">更新t4 WHERE region_code = 7;
</font></font></pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							修剪也可以用于短距离，因为优化器可以将这些条件转化为</font>
					</font><code class="literal">IN</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							关系。</font>
						<font style="vertical-align: inherit;">例如，使用</font>
					</font><code class="literal">t4</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							前面定义</font>
						<font style="vertical-align: inherit;">的相同表</font>
						<font style="vertical-align: inherit;">，可以修剪这些查询：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">SELECT * FROM t4 WHERE region_code&gt; 2 AND region_code &lt;6;</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
SELECT * FROM t4 WHERE region_code BETWEEN 3和5;</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							在这两种情况下，该</font>
					</font><code class="literal">WHERE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">子句都由优化器转换为</font>
					</font><code class="literal">WHERE region_code IN
						(3, 4, 5)</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<div class="important" style="margin-left: 0.5in; margin-right: 0.5in;">

					<div class="admon-title">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								重要
							</font>
						</font>
					</div>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								仅当范围大小小于分区数时才使用此优化。</font>
							<font style="vertical-align: inherit;">请考虑以下声明：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">删除t4 WHERE region_code在4和12之间;
</font></font></pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								该</font>
						</font><code class="literal">WHERE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">条款中的范围涵盖9个值（4,5,6,7,8,9,10,11,12），但</font>
						</font><code class="literal">t4</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">只有8个分区。</font>
							<font style="vertical-align: inherit;">这意味着</font>
						</font><code class="literal">DELETE</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								无法修剪。
							</font>
						</font>
					</p>
				</div>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							当表被</font>
					</font><code class="literal">HASH</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">or
						</font>
						<font style="vertical-align: inherit;">分区时</font>
					</font><code class="literal">[LINEAR] KEY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，修剪只能用于整数列。</font>
						<font style="vertical-align: inherit;">例如，此语句不能使用修剪，因为它</font>
					</font><code class="literal">dob</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">是一
						</font>
					</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">列：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">SELECT * FROM t4 WHERE dob&gt; ='2001-04-14'ANDb &lt;='2005-10-15';
</font></font></pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							但是，如果表在</font>
					</font><a class="link" href="data-types.html#integer-types" title="11.2.1整数类型（精确值） -  INTEGER，INT，SMALLINT，TINYINT，MEDIUMINT，BIGINT"><code
						 class="literal">INT</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">列</font>
						<font style="vertical-align: inherit;">中存储年份值
						</font>
						<font style="vertical-align: inherit;">，则</font>
					</font><code class="literal">WHERE year_col &gt;= 2001 AND year_col &lt;=
						2005</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">可以修剪</font>
						<font style="vertical-align: inherit;">查询
						</font>
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							使用提供自动分区的存储引擎的表（如</font>
					</font><code class="literal">NDB</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">MySQL Cluster使用</font>
						<font style="vertical-align: inherit;">的</font>
						<font style="vertical-align: inherit;">存储引擎）可以在显式分区时进行修剪。
						</font>
					</font>
				</p>
			</div>
			<div class="section">
				<div class="titlepage">
					<div>
						<div>
							<h2 class="title" style="clear: both"><a name="partitioning-selection"></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">23.5分区选择</font>
								</font>
							</h2>

						</div>

					</div>

				</div>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							支持显式选择与给定</font>
					</font><code class="literal">WHERE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">条件</font>
						<font style="vertical-align: inherit;">匹配的行的分区和子分区</font>
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">分区选择类似于分区修剪，因为只检查特定分区的匹配，但在两个关键方面有所不同：
						</font>
					</font>
				</p>
				<div class="orderedlist">
					<ol class="orderedlist" type="1">
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										要检查的分区由语句的颁发者指定，这与分区修剪不同，后者是自动的。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										分区修剪仅适用于查询，而查询和许多DML语句都支持显式选择分区。
									</font>
								</font>
							</p>
						</li>
					</ol>
				</div>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							此处列出了支持显式分区选择的SQL语句：
						</font>
					</font>
				</p>
				<div class="itemizedlist">
					<ul class="itemizedlist" style="list-style-type: disc; ">
						<li class="listitem">
							<p>
								<a class="link" href="sql-syntax.html#select" title="13.2.10 SELECT语法"><code class="literal">SELECT</code></a>
							</p>
						</li>
						<li class="listitem">
							<p>
								<a class="link" href="sql-syntax.html#delete" title="13.2.2 DELETE语法"><code class="literal">DELETE</code></a>
							</p>
						</li>
						<li class="listitem">
							<p>
								<a class="link" href="sql-syntax.html#insert" title="13.2.6 INSERT语法"><code class="literal">INSERT</code></a>
							</p>
						</li>
						<li class="listitem">
							<p>
								<a class="link" href="sql-syntax.html#replace" title="13.2.9 REPLACE语法"><code class="literal">REPLACE</code></a>
							</p>
						</li>
						<li class="listitem">
							<p>
								<a class="link" href="sql-syntax.html#update" title="13.2.12 UPDATE语法"><code class="literal">UPDATE</code></a>
							</p>
						</li>
						<li class="listitem">
							<p>
								<a class="link" href="sql-syntax.html#load-data" title="13.2.7 LOAD DATA语法"><code class="literal">LOAD DATA</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<a class="link" href="sql-syntax.html#load-xml" title="13.2.8 LOAD XML语法"><code class="literal">LOAD XML</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
					</ul>
				</div>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							本节的其余部分讨论了显式分区选择，因为它通常适用于刚刚列出的语句，并提供了一些示例。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							使用</font>
					</font><code class="literal">PARTITION</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">选项</font>
						<font style="vertical-align: inherit;">实现显式分区选择
						</font>
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">对于所有受支持的语句，此选项使用此处显示的语法：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">      分区（</font></font><em class="replaceable"><code>partition_names</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">）</font></font><font></font>
<font></font>
      <em class="replaceable"><code>partition_names</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">：
           </font></font><em class="replaceable"><code>partition_name</code></em><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">，...
</font></font></pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							此选项始终遵循分区或分区所属的表的名称。
						</font>
					</font><em class="replaceable"><code>partition_names</code></em>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">是要使用的以逗号分隔的分区或子分区列表。</font>
						<font style="vertical-align: inherit;">此列表中的每个名称必须是指定表的现有分区或子分区的名称; </font>
						<font style="vertical-align: inherit;">如果找不到任何分区或子分区，则该语句将失败并显示错误（</font>
					</font><span class="errortext">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区' </font>
						</font><em class="replaceable"><code>partition_name</code></em>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">'不存在</font>
						</font>
					</span>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">）。</font>
						<font style="vertical-align: inherit;">命名的分区和子分区
						</font>
					</font><em class="replaceable"><code>partition_names</code></em>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">可以按任何顺序列出，并且可以重叠。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							使用该</font>
					</font><code class="literal">PARTITION</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">选项时，仅检查列出的分区和子分区的匹配行。</font>
						<font style="vertical-align: inherit;">可以在</font>
					</font><a class="link" href="sql-syntax.html#select" title="13.2.10 SELECT语法"><code class="literal">SELECT</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							语句中</font>
						<font style="vertical-align: inherit;">使用此选项</font>
						<font style="vertical-align: inherit;">来确定哪些行属于给定分区。</font>
						<font style="vertical-align: inherit;">考虑</font>
					</font><code class="literal">employees</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">使用此处显示的语句</font>
						<font style="vertical-align: inherit;">命名</font>
						<font style="vertical-align: inherit;">，创建和填充</font>
						<font style="vertical-align: inherit;">的分区表</font>
						<font style="vertical-align: inherit;">：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">SET @@ SQL_MODE ='';</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
CREATE TABLE员工（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NOT AUTO_INCREMENT PRIMARY KEY，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    fname VARCHAR（25）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    lname VARCHAR（25）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    store_id INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    department_id INT NOT NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
） </font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    按范围划分（id）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p0值小于（5），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p1值小于（10），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        分区p2值小于（15），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
        PARTITION p3值比MAXVALUE低</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
插入员工价值观</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （''，'Bob'，'Taylor'，3,2），（''，'Frank'，'Williams'，1,2），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （''，'Ellen'，'Johnson'，3,4），（''，'Jim'，'Smith'，2,4），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （''，'玛丽'，'琼斯'，1,1），（''，'琳达'，'黑'，2,3），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （''，'Ed'，'琼斯'，2,1），（''，'六月'，'威尔逊'，3,1），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （''，'安迪'，'史密斯'，1,3），（''，'娄'，'沃特斯'，2,4），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （''，'吉尔'，'石'，1,4），（''，'罗杰'，'怀特'，3,2），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （''，'霍华德'，'安德鲁斯'，1,2），（''，'弗雷德'，'戈德伯格'，3,3），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （''，'芭芭拉'，'布朗'，2,3），（''，'爱丽丝'，'罗杰斯'，2,2），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （''，'马克'，'摩根'，3,3），（''，'凯伦'，'科尔'，3,2）;</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							您可以看到哪些行存储在分区中，
						</font>
					</font><code class="literal">p1</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">如下所示：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>SELECT * FROM employees PARTITION (p1);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ------- + -------- + ---------- + --------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">id | </font><font style="vertical-align: inherit;">fname | </font><font style="vertical-align: inherit;">lname | </font><font style="vertical-align: inherit;">store_id | </font><font style="vertical-align: inherit;">department_id |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ------- + -------- + ---------- + --------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">5 | </font><font style="vertical-align: inherit;">玛丽| </font><font style="vertical-align: inherit;">琼斯| </font><font style="vertical-align: inherit;">1 | </font><font style="vertical-align: inherit;">1 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">6 | </font><font style="vertical-align: inherit;">琳达| </font><font style="vertical-align: inherit;">黑色| </font><font style="vertical-align: inherit;">2 | </font><font style="vertical-align: inherit;">3 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">7 | </font><font style="vertical-align: inherit;">Ed | </font><font style="vertical-align: inherit;">琼斯| </font><font style="vertical-align: inherit;">2 | </font><font style="vertical-align: inherit;">1 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">8 | </font><font style="vertical-align: inherit;">六月| </font><font style="vertical-align: inherit;">威尔逊| </font><font style="vertical-align: inherit;">3 | </font><font style="vertical-align: inherit;">1 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">9 | </font><font style="vertical-align: inherit;">安迪| </font><font style="vertical-align: inherit;">史密斯| </font><font style="vertical-align: inherit;">1 | </font><font style="vertical-align: inherit;">3 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ------- + -------- + ---------- + --------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
5行（0.00秒）</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							结果与查询获得的结果相同</font>
					</font><code class="literal">SELECT *
						FROM employees WHERE id BETWEEN 5 AND 9</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							要从多个分区获取行，请将其名称作为逗号分隔列表提供。</font>
						<font style="vertical-align: inherit;">例如，</font>
					</font><code class="literal">SELECT * FROM
						employees PARTITION (p1, p2)</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">从分区返回所有行</font>
					</font><code class="literal">p1</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，</font>
					</font><code class="literal">p2</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">同时从其余分区中排除行。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							可以使用</font>
					</font><code class="literal">PARTITION</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">选项</font>
						<font style="vertical-align: inherit;">重写对分区表的任何有效查询，</font>
						<font style="vertical-align: inherit;">以将结果限制为一个或多个所需分区。</font>
						<font style="vertical-align: inherit;">您可以使用
						</font>
					</font><code class="literal">WHERE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">条件</font>
					</font><code class="literal">ORDER BY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							和</font>
					</font><code class="literal">LIMIT</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">选项等。</font>
						<font style="vertical-align: inherit;">您还可以使用聚合函数</font>
					</font><code class="literal">HAVING</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">和
						</font>
					</font><code class="literal">GROUP BY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">选项。</font>
						<font style="vertical-align: inherit;">以下每个查询在</font>
					</font><code class="literal">employees</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">以前定义</font>
						<font style="vertical-align: inherit;">的</font>
						<font style="vertical-align: inherit;">表上</font>
						<font style="vertical-align: inherit;">运行时都会生成有效结果
						</font>
						<font style="vertical-align: inherit;">：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>SELECT * FROM employees PARTITION (p0, p2)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>WHERE lname LIKE 'S%';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ------- ------- + + ---------- + --------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">id | </font><font style="vertical-align: inherit;">fname | </font><font style="vertical-align: inherit;">lname | </font><font style="vertical-align: inherit;">store_id | </font><font style="vertical-align: inherit;">department_id |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ------- ------- + + ---------- + --------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">4 | </font><font style="vertical-align: inherit;">吉姆| </font><font style="vertical-align: inherit;">史密斯| </font><font style="vertical-align: inherit;">2 | </font><font style="vertical-align: inherit;">4 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">11 | </font><font style="vertical-align: inherit;">吉尔| </font><font style="vertical-align: inherit;">石头| </font><font style="vertical-align: inherit;">1 | </font><font style="vertical-align: inherit;">4 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ------- ------- + + ---------- + --------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
2行（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font></font><strong class="userinput"><code>SELECT id, CONCAT(fname, ' ', lname) AS name</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>FROM employees PARTITION (p0) ORDER BY lname;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ---------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">id | </font><font style="vertical-align: inherit;">名字|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ---------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">3 | </font><font style="vertical-align: inherit;">艾伦约翰逊|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">4 | </font><font style="vertical-align: inherit;">吉姆史密斯|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">1 | </font><font style="vertical-align: inherit;">鲍勃泰勒|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">2 | </font><font style="vertical-align: inherit;">Frank Williams |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ---------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
4行（0.06秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font></font><strong class="userinput"><code>SELECT store_id, COUNT(department_id) AS c</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>FROM employees PARTITION (p1,p2,p3)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>GROUP BY store_id HAVING c &gt; 4;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+  -  + ---------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">c | </font><font style="vertical-align: inherit;">store_id |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+  -  + ---------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">5 | </font><font style="vertical-align: inherit;">2 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">5 | </font><font style="vertical-align: inherit;">3 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+  -  + ---------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
2行（0.00秒）</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							使用分区选择的语句可以与使用任何支持的分区类型的表一起使用。</font>
						<font style="vertical-align: inherit;">当使用创建表</font>
					</font><code class="literal">[LINEAR] HASH</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或
						</font>
					</font><code class="literal">[LINEAR] KEY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">分区而不是指定分区的名字，MySQL的自动命名分区</font>
					</font><code class="literal">p0</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，</font>
					</font><code class="literal">p1</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，
						</font>
					</font><code class="literal">p2</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，...
						</font>
						<font style="vertical-align: inherit;">，那里
						</font>
						<font style="vertical-align: inherit;">是分区的数量。</font>
						<font style="vertical-align: inherit;">对于子分区不明确命名，MySQL的自动分配到每个分区中的子分区
						</font>
						<font style="vertical-align: inherit;">的名称
						</font>
						<font style="vertical-align: inherit;">，
						</font>
						<font style="vertical-align: inherit;">，
						</font>
						<font style="vertical-align: inherit;">，...
						</font>
						<font style="vertical-align: inherit;">，那里</font>
						<font style="vertical-align: inherit;">是子分区的数量。</font>
						<font style="vertical-align: inherit;">对此表执行时a
						</font>
					</font><code class="literal">p<em class="replaceable"><code>N-1</code></em></code>
					<font style="vertical-align: inherit;"></font><em class="replaceable"><code>N</code></em>
					<font style="vertical-align: inherit;"></font><code class="literal">p<em class="replaceable"><code>X</code></em></code>
					<font style="vertical-align: inherit;"></font><code class="literal">p<em class="replaceable"><code>X</code></em>sp0</code>
					<font style="vertical-align: inherit;"></font><code class="literal">p<em class="replaceable"><code>X</code></em>sp1</code>
					<font style="vertical-align: inherit;"></font><code class="literal">p<em class="replaceable"><code>X</code></em>sp2</code>
					<font style="vertical-align: inherit;"></font><code class="literal">p<em class="replaceable"><code>X</code></em>sp<em
						 class="replaceable"><code>M-1</code></em></code>
					<font style="vertical-align: inherit;"></font><em class="replaceable"><code>M</code></em>
					<font style="vertical-align: inherit;"></font><a class="link" href="sql-syntax.html#select" title="13.2.10 SELECT语法"><code
						 class="literal">SELECT</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">（或允许显式分区选择的其他SQL语句），您可以在</font>
					</font><code class="literal">PARTITION</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">选项中</font>
						<font style="vertical-align: inherit;">使用这些生成的名称</font>
						<font style="vertical-align: inherit;">，如下所示：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>CREATE TABLE employees_sub  (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>id INT NOT NULL AUTO_INCREMENT,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>fname VARCHAR(25) NOT NULL,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>lname VARCHAR(25) NOT NULL,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>store_id INT NOT NULL,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>department_id INT NOT NULL,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PRIMARY KEY pk (id, lname)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> 
    - &gt;      </font></font><strong class="userinput"><code>PARTITION BY RANGE(id)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>SUBPARTITION BY KEY (lname)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>SUBPARTITIONS 2 (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;          </font></font><strong class="userinput"><code>PARTITION p0 VALUES LESS THAN (5),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;          </font></font><strong class="userinput"><code>PARTITION p1 VALUES LESS THAN (10),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;          </font></font><strong class="userinput"><code>PARTITION p2 VALUES LESS THAN (15),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;          </font></font><strong class="userinput"><code>PARTITION p3 VALUES LESS THAN MAXVALUE</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;</font></font><strong class="userinput"><code>);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，0行受影响（1.14秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font></font><strong class="userinput"><code>INSERT INTO employees_sub</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">   ＃在employees表中重用数据</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>SELECT * FROM employees;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，18行受影响（0.09秒）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
记录：18个重复：0个警告：0</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font></font><strong class="userinput"><code>SELECT id, CONCAT(fname, ' ', lname) AS name</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>FROM employees_sub PARTITION (p2sp1);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + --------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">id | </font><font style="vertical-align: inherit;">名字|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + --------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">10 | </font><font style="vertical-align: inherit;">Lou Waters |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">14 | </font><font style="vertical-align: inherit;">弗雷德戈德堡|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + --------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
2行（0.00秒）</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							您还</font>
					</font><code class="literal">PARTITION</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">可以在</font>
						<font style="vertical-align: inherit;">语句</font>
						<font style="vertical-align: inherit;">的</font>
					</font><a class="link" href="sql-syntax.html#select" title="13.2.10 SELECT语法"><code class="literal">SELECT</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">部分中
						</font>
						<font style="vertical-align: inherit;">使用</font>
						<font style="vertical-align: inherit;">选项
						</font>
					</font><a class="link" href="sql-syntax.html#insert-select" title="13.2.6.1 INSERT ... SELECT语法"><code class="literal">INSERT
							...
							SELECT</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，如下所示：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>CREATE TABLE employees_copy LIKE employees;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.28秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font></font><strong class="userinput"><code>INSERT INTO employees_copy</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>SELECT * FROM employees PARTITION (p2);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，5行受影响（0.04秒）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
记录：5个重复：0个警告：0</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>SELECT * FROM employees_copy;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + -------- + ---------- + ---------- + ------------- -  +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">id | </font><font style="vertical-align: inherit;">fname | </font><font style="vertical-align: inherit;">lname | </font><font style="vertical-align: inherit;">store_id | </font><font style="vertical-align: inherit;">department_id |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + -------- + ---------- + ---------- + ------------- -  +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">10 | </font><font style="vertical-align: inherit;">娄| </font><font style="vertical-align: inherit;">沃特世| </font><font style="vertical-align: inherit;">2 | </font><font style="vertical-align: inherit;">4 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">11 | </font><font style="vertical-align: inherit;">吉尔| </font><font style="vertical-align: inherit;">石头| </font><font style="vertical-align: inherit;">1 | </font><font style="vertical-align: inherit;">4 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">12 | </font><font style="vertical-align: inherit;">罗杰| </font><font style="vertical-align: inherit;">白色| </font><font style="vertical-align: inherit;">3 | </font><font style="vertical-align: inherit;">2 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">13 | </font><font style="vertical-align: inherit;">霍华德| </font><font style="vertical-align: inherit;">安德鲁斯| </font><font style="vertical-align: inherit;">1 | </font><font style="vertical-align: inherit;">2 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">14 | </font><font style="vertical-align: inherit;">弗雷德| </font><font style="vertical-align: inherit;">戈德堡| </font><font style="vertical-align: inherit;">3 | </font><font style="vertical-align: inherit;">3 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + -------- + ---------- + ---------- + ------------- -  +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
5行（0.00秒）</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							分区选择也可以与连接一起使用。</font>
						<font style="vertical-align: inherit;">假设我们使用此处显示的语句创建并填充两个表：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE商店（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NOT AUTO_INCREMENT PRIMARY KEY，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    city VARCHAR（30）NOT NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    哈希分区（id）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITIONS 2;</font></font><font></font>
  <font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
INSERT INTO存储VALUES</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （''，'Nambucca'），（''，'Uranga'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （''，'贝林根'），（''，'格拉夫顿'）;</font></font><font></font>
  <font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
CREATE TABLE部门（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NOT AUTO_INCREMENT PRIMARY KEY，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    name VARCHAR（30）NOT NULL</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION BY KEY（id）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITIONS 2;</font></font><font></font>
  <font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
插入部门VALUES</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （''，'销售'），（''，'客户服务'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （''，'交付'），（''，'会计'）;</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							您可以从连接中的任何或所有表中显式选择分区（或子分区，或两者）。</font>
						<font style="vertical-align: inherit;">（</font>
					</font><code class="literal">PARTITION</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">用于从给定表中选择分区</font>
						<font style="vertical-align: inherit;">的
						</font>
						<font style="vertical-align: inherit;">选项紧跟在表的名称之前，在所有其他选项之前，包括任何表别名。）例如，以下查询获取所有员工的名称，员工ID，部门和城市谁在销售或交付部门工作（分区</font>
					</font><code class="literal">p1</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">中的
						</font>
					</font><code class="literal">departments</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">在商店表）在任的Nambucca和贝林根（分区的城市
						</font>
					</font><code class="literal">p0</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">中的</font>
					</font><code class="literal">stores</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">表）：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>SELECT</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>e.id AS 'Employee ID', CONCAT(e.fname, ' ', e.lname) AS Name,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>s.city AS City, d.name AS department</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>FROM employees AS e</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>JOIN stores PARTITION (p1) AS s ON e.store_id=s.id</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>JOIN departments PARTITION (p0) AS d ON e.department_id=d.id</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;</font></font><strong class="userinput"><code>ORDER BY e.lname;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------- + --------------- + ----------- + ------- ----- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">员工ID | </font><font style="vertical-align: inherit;">名称| </font><font style="vertical-align: inherit;">城市| </font><font style="vertical-align: inherit;">部门|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------- + --------------- + ----------- + ------- ----- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">14 | </font><font style="vertical-align: inherit;">弗雷德戈德堡| </font><font style="vertical-align: inherit;">贝林根| </font><font style="vertical-align: inherit;">交货|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">5 | </font><font style="vertical-align: inherit;">玛丽琼斯| </font><font style="vertical-align: inherit;">Nambucca | </font><font style="vertical-align: inherit;">销售|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">17 | </font><font style="vertical-align: inherit;">马克摩根| </font><font style="vertical-align: inherit;">贝林根| </font><font style="vertical-align: inherit;">交货|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">9 | </font><font style="vertical-align: inherit;">安迪史密斯| </font><font style="vertical-align: inherit;">Nambucca | </font><font style="vertical-align: inherit;">交货|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">8 | </font><font style="vertical-align: inherit;">June Wilson | </font><font style="vertical-align: inherit;">贝林根| </font><font style="vertical-align: inherit;">销售|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------- + --------------- + ----------- + ------- ----- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
5行（0.00秒）</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							有关MySQL中的连接的一般信息，请参见
						</font>
					</font><a class="xref" href="sql-syntax.html#join" title="13.2.10.2 JOIN语法">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第13.2.10.2节“JOIN语法”</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							当该</font>
					</font><code class="literal">PARTITION</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">选项与</font>
					</font><a class="link" href="sql-syntax.html#delete" title="13.2.2 DELETE语法"><code class="literal">DELETE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">语句一起</font>
						<font style="vertical-align: inherit;">使用时
						</font>
						<font style="vertical-align: inherit;">，仅检查随该选项列出的那些分区（和子分区，如果有的话）是否要删除行。</font>
						<font style="vertical-align: inherit;">忽略任何其他分区，如下所示：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>SELECT * FROM employees WHERE fname LIKE 'j%';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ------- + -------- + ---------- + --------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">id | </font><font style="vertical-align: inherit;">fname | </font><font style="vertical-align: inherit;">lname | </font><font style="vertical-align: inherit;">store_id | </font><font style="vertical-align: inherit;">department_id |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ------- + -------- + ---------- + --------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">4 | </font><font style="vertical-align: inherit;">吉姆| </font><font style="vertical-align: inherit;">史密斯| </font><font style="vertical-align: inherit;">2 | </font><font style="vertical-align: inherit;">4 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">8 | </font><font style="vertical-align: inherit;">六月| </font><font style="vertical-align: inherit;">威尔逊| </font><font style="vertical-align: inherit;">3 | </font><font style="vertical-align: inherit;">1 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">11 | </font><font style="vertical-align: inherit;">吉尔| </font><font style="vertical-align: inherit;">石头| </font><font style="vertical-align: inherit;">1 | </font><font style="vertical-align: inherit;">4 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ------- + -------- + ---------- + --------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
3组（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font></font><strong class="userinput"><code>DELETE FROM employees PARTITION (p0, p1)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>WHERE fname LIKE 'j%';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，2行受影响（0.09秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>SELECT * FROM employees WHERE fname LIKE 'j%';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ------- ------- + + ---------- + --------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">id | </font><font style="vertical-align: inherit;">fname | </font><font style="vertical-align: inherit;">lname | </font><font style="vertical-align: inherit;">store_id | </font><font style="vertical-align: inherit;">department_id |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ------- ------- + + ---------- + --------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">11 | </font><font style="vertical-align: inherit;">吉尔| </font><font style="vertical-align: inherit;">石头| </font><font style="vertical-align: inherit;">1 | </font><font style="vertical-align: inherit;">4 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ------- ------- + + ---------- + --------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
1排（0.00秒）</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							仅</font>
						<font style="vertical-align: inherit;">
							删除</font>
						<font style="vertical-align: inherit;">分区中的两行</font>
					</font><code class="literal">p0</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">并
						</font>
					</font><code class="literal">p1</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">匹配</font>
					</font><code class="literal">WHERE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">条件。</font>
						<font style="vertical-align: inherit;">正如您</font>
					</font><a class="link" href="sql-syntax.html#select" title="13.2.10 SELECT语法"><code class="literal">SELECT</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">在第二次运行</font>
						<font style="vertical-align: inherit;">时从结果中看到的
						</font>
						<font style="vertical-align: inherit;">那样，表中仍有一行符合</font>
					</font><code class="literal">WHERE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							条件，但位于不同的分区（</font>
					</font><code class="literal">p2</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">）中。
						</font>
					</font>
				</p>
				<p>
					<a class="link" href="sql-syntax.html#update" title="13.2.12 UPDATE语法"><code class="literal">UPDATE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">使用显式分区选择的语句的行为方式相同; </font>
					</font><code class="literal">PARTITION</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">在确定要更新的行时，只考虑选项</font>
						<font style="vertical-align: inherit;">引用的分区中</font>
						<font style="vertical-align: inherit;">的行，如执行以下语句可以看到：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>UPDATE employees PARTITION (p0) </code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>SET store_id = 2 WHERE fname = 'Jill';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，0行受影响（0.00秒）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
匹配行数：0已更改：0警告：0</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>SELECT * FROM employees WHERE fname = 'Jill';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ------- ------- + + ---------- + --------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">id | </font><font style="vertical-align: inherit;">fname | </font><font style="vertical-align: inherit;">lname | </font><font style="vertical-align: inherit;">store_id | </font><font style="vertical-align: inherit;">department_id |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ------- ------- + + ---------- + --------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">11 | </font><font style="vertical-align: inherit;">吉尔| </font><font style="vertical-align: inherit;">石头| </font><font style="vertical-align: inherit;">1 | </font><font style="vertical-align: inherit;">4 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ------- ------- + + ---------- + --------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
1排（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font></font><strong class="userinput"><code>UPDATE employees PARTITION (p2)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>SET store_id = 2 WHERE fname = 'Jill';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，1行受影响（0.09秒）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
匹配的行数：1已更改：1警告：0</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>SELECT * FROM employees WHERE fname = 'Jill';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ------- ------- + + ---------- + --------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">id | </font><font style="vertical-align: inherit;">fname | </font><font style="vertical-align: inherit;">lname | </font><font style="vertical-align: inherit;">store_id | </font><font style="vertical-align: inherit;">department_id |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ------- ------- + + ---------- + --------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">11 | </font><font style="vertical-align: inherit;">吉尔| </font><font style="vertical-align: inherit;">石头| </font><font style="vertical-align: inherit;">2 | </font><font style="vertical-align: inherit;">4 |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ---- + ------- ------- + + ---------- + --------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
1排（0.00秒）</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							以相同的方式，当</font>
					</font><code class="literal">PARTITION</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">使用时
						</font>
					</font><a class="link" href="sql-syntax.html#delete" title="13.2.2 DELETE语法"><code class="literal">DELETE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，仅检查分区列表中命名的分区中的行或删除分区列表中的分区。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							对于插入行的语句，行为的不同之处在于找不到合适的分区导致语句失败。</font>
						<font style="vertical-align: inherit;">这对于两个</font>
					</font><a class="link" href="sql-syntax.html#insert" title="13.2.6 INSERT语法"><code class="literal">INSERT</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">和
						</font>
					</font><a class="link" href="sql-syntax.html#replace" title="13.2.9 REPLACE语法"><code class="literal">REPLACE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">语句</font>
						<font style="vertical-align: inherit;">都是如此</font>
						<font style="vertical-align: inherit;">，如下所示：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font><span class="errortext"><font style="vertical-align: inherit;">ERROR 1729（HY000）：发现一行不匹配给定的分区集</font></span><font style="vertical-align: inherit;"> 
mysql&gt;</font></font><strong class="userinput"><code>INSERT INTO employees PARTITION (p2) VALUES (20, 'Jan', 'Jones', 1, 3);</code></strong>
<span class="errortext"><font style="vertical-align: inherit;"></font></span><font style="vertical-align: inherit;"></font><strong class="userinput"><code>INSERT INTO employees PARTITION (p3) VALUES (20, 'Jan', 'Jones', 1, 3);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，1行受影响（0.07秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; REPLACE INTO员工PARTITION（p0）VALUES（20，'Jan'，'Jones'，3,2）;</font></font><font></font>
<span class="errortext"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">错误1729（HY000）：找到与给定分区集不匹配的行</font></font></span><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; REPLACE INTO员工PARTITION（p3）VALUES（20，'Jan'，'Jones'，3,2）;</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，2行受影响（0.09秒）</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							对于使用</font>
					</font><a class="link" href="innodb-storage-engine.html" title="第15章InnoDB存储引擎"><code class="literal">InnoDB</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">存储引擎</font>
						<font style="vertical-align: inherit;">将多行写入分区表的语句</font>
						<font style="vertical-align: inherit;">：如果以下列表中的任何行</font>
					</font><code class="literal">VALUES</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">无法写入</font>
					</font><em class="replaceable"><code>partition_names</code></em>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">列表中</font>
						<font style="vertical-align: inherit;">指定的某个分区
						</font>
						<font style="vertical-align: inherit;">，则整个语句将失败并且不会写入任何行。</font>
						<font style="vertical-align: inherit;">这显示</font>
					</font><a class="link" href="sql-syntax.html#insert" title="13.2.6 INSERT语法"><code class="literal">INSERT</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">在以下示例</font>
						<font style="vertical-align: inherit;">中的
						</font>
						<font style="vertical-align: inherit;">语句，重用</font>
					</font><code class="literal">employees</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">以前创建</font>
						<font style="vertical-align: inherit;">的</font>
						<font style="vertical-align: inherit;">表：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>ALTER TABLE employees</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>REORGANIZE PARTITION p3 INTO (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;          </font></font><strong class="userinput"><code>PARTITION p3 VALUES LESS THAN (20),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;          </font></font><strong class="userinput"><code>PARTITION p4 VALUES LESS THAN (25),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;          </font></font><strong class="userinput"><code>PARTITION p5 VALUES LESS THAN MAXVALUE</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，6行受影响（2.09秒）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
记录：6个重复：0个警告：0</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>SHOW CREATE TABLE employees\G</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
*************************** 1。排******************** *******</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
       表：员工</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
创建表：CREATE TABLE`员工`（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  `id` int（11）NOT NULL AUTO_INCREMENT，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  `fname` varchar（25）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  `lname` varchar（25）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  `store_id` int（11）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  `department_id` int（11）NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
  PRIMARY KEY（`id`）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）ENGINE = InnoDB AUTO_INCREMENT = 27 DEFAULT CHARSET = utf8mb4</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
/ *！50100 PAR BY BY RANGE（id）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
（PARTITION p0值小于（5）ENGINE = InnoDB，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 分区p1值小于（10）ENGINE = InnoDB，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 分区p2值小于（15）ENGINE = InnoDB，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 分区p3值少于（20）ENGINE = InnoDB，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 分区p4值低于（25）ENGINE = InnoDB，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
 PARTITION p5的价值低于MAXVALUE ENGINE = InnoDB）* /</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
1排（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font></font><strong class="userinput"><code>INSERT INTO employees PARTITION (p3, p4) VALUES</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>(24, 'Tim', 'Greene', 3, 1),  (26, 'Linda', 'Mills', 2, 1);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
错误1729（HY000）：找到与给定分区集不匹配的行</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font></font><strong class="userinput"><code>INSERT INTO employees PARTITION (p3, p4. p5) VALUES</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>(24, 'Tim', 'Greene', 3, 1),  (26, 'Linda', 'Mills', 2, 1);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，2行受影响（0.06秒）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
记录：2个重复：0个警告：0</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							对于</font>
						<font style="vertical-align: inherit;">写入多行的</font>
					</font><a class="link" href="sql-syntax.html#insert" title="13.2.6 INSERT语法"><code class="literal">INSERT</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">语句和
						</font>
					</font><a class="link" href="sql-syntax.html#replace" title="13.2.9 REPLACE语法"><code class="literal">REPLACE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">语句，</font>
						<font style="vertical-align: inherit;">前面的描述都是正确的
						</font>
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							对于使用提供自动分区的存储引擎的表，禁用分区选择，例如
						</font>
					</font><code class="literal">NDB</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
			</div>
			<div class="section">
				<div class="titlepage">
					<div>
						<div>
							<h2 class="title" style="clear: both"><a name="partitioning-limitations"></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">23.6分区的限制和限制</font>
								</font>
							</h2>

						</div>

					</div>

				</div>
				<div class="toc">
					<dl class="toc"><dt><span class="section"><a href="partitioning.html#partitioning-limitations-partitioning-keys-unique-keys">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.6.1对密钥，主密钥和唯一密钥进行分区</font>
									</font>
								</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-limitations-storage-engines">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.6.2与存储引擎相关的分区限制</font>
									</font>
								</a></span></dt><dt><span class="section"><a href="partitioning.html#partitioning-limitations-functions">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.6.3与函数相关的分区限制</font>
									</font>
								</a></span></dt></dl>
				</div>
				<a class="indexterm" name="idm140091572565488"></a>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							本节讨论当前对MySQL分区支持的限制和限制。
						</font>
					</font>
				</p>
				<p><b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">禁止的结构。&nbsp;</font>
						</font>
					</b>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							分区表达式中不允许使用以下结构：
						</font>
					</font>
				</p>
				<div class="itemizedlist">
					<ul class="itemizedlist" style="list-style-type: disc; ">
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										存储过程，存储函数，UDF或插件。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										声明变量或用户变量。
									</font>
								</font>
							</p>
						</li>
					</ul>
				</div>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							有关分区表达式中允许的SQL函数列表，请参见
						</font>
					</font><a class="xref" href="partitioning.html#partitioning-limitations-functions" title="23.6.3与函数相关的分区限制">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第23.6.3节“分区与函数相关的限制”</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p><b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">算术和逻辑运算符。&nbsp;</font>
						</font>
					</b>
					<a class="indexterm" name="idm140091572558000"></a>

					<a class="indexterm" name="idm140091572556480"></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">

							算术运算符的应用
						</font>
					</font><a class="link" href="functions.html#operator_plus"><code class="literal">+</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，
						</font>
					</font><a class="link" href="functions.html#operator_minus"><code class="literal">-</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">以及
						</font>
					</font><a class="link" href="functions.html#operator_times"><code class="literal">*</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">允许在分区表达式。</font>
						<font style="vertical-align: inherit;">但是，结果必须是整数值或</font>
					</font><code class="literal">NULL</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">（除非在</font>
					</font><code class="literal">[LINEAR] KEY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">分区</font>
						<font style="vertical-align: inherit;">的情况下
						</font>
						<font style="vertical-align: inherit;">，如本章其他部分所述; </font>
						<font style="vertical-align: inherit;">有关更多信息，</font>
						<font style="vertical-align: inherit;">请参见
						</font>
					</font><a class="xref" href="partitioning.html#partitioning-types" title="23.2分区类型">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第23.2节“分区类型”</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">）。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							该</font>
					</font><a class="link" href="functions.html#operator_div"><code class="literal">DIV</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">运营商还支持; </font>
						<font style="vertical-align: inherit;">该</font>
					</font><a class="link" href="functions.html#operator_divide"><code class="literal">/</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">操作是不允许的。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							该位运营商
						</font>
					</font><a class="link" href="functions.html#operator_bitwise-or"><code class="literal">|</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，
						</font>
					</font><a class="link" href="functions.html#operator_bitwise-and"><code class="literal">&amp;</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，
						</font>
					</font><a class="link" href="functions.html#operator_bitwise-xor"><code class="literal">^</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，
						</font>
					</font><a class="link" href="functions.html#operator_left-shift"><code class="literal">&lt;&lt;</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，
						</font>
					</font><a class="link" href="functions.html#operator_right-shift"><code class="literal">&gt;&gt;</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，并
						</font>
					</font><a class="link" href="functions.html#operator_bitwise-invert"><code class="literal">~</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">没有在分区表达式允许的。
						</font>
					</font>
				</p>
				<p><b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">服务器SQL模式。&nbsp;</font>
						</font>
					</b>
					<a class="indexterm" name="idm140091572537184"></a>

					<a class="indexterm" name="idm140091572535696"></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">

							使用用户定义分区的表不会保留在创建它们时生效的SQL模式。</font>
						<font style="vertical-align: inherit;">如本手册其他</font>
					</font><a class="xref" href="server-administration.html#sql-mode" title="5.1.11服务器SQL模式">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">部分所述</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">（请参见
						</font><a class="xref" href="server-administration.html#sql-mode" title="5.1.11服务器SQL模式">
							<font style="vertical-align: inherit;">第5.1.11节“服务器SQL模式”</font>
						</a>
						<font style="vertical-align: inherit;">），许多MySQL函数和运算符的结果可能会根据服务器SQL模式而更改。</font>
						<font style="vertical-align: inherit;">因此，在创建分区表后随时更改SQL模式可能会导致此类表的行为发生重大更改，并且很容易导致数据损坏或丢失。</font>
						<font style="vertical-align: inherit;">出于这些原因，</font>
					</font><span class="emphasis"><em>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">强烈建议您在创建分区表后永远不要更改服务器SQL模式</font>
							</font>
						</em></span>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p><b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">例子。&nbsp;</font>
						</font>
					</b>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							以下示例说明了由于服务器SQL模式的更改而导致分区表行为的一些更改：
						</font>
					</font>
				</p>
				<div class="orderedlist">
					<ol class="orderedlist" type="1">
						<li class="listitem">
							<p><b>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">错误处理。&nbsp;</font>
									</font>
								</b>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										正如其他地方所讨论的那样，处理</font>
								</font><span class="quote">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">“ </font>
									</font><span class="quote">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">特殊</font>
										</font>
									</span>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;"> ”</font>
									</font>
								</span>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										值（如零）</font>
								</font><code class="literal">NULL</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">可能因不同服务器SQL模式而不同（请参见
									</font>
								</font><a class="xref" href="server-administration.html#sql-mode" title="5.1.11服务器SQL模式">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第5.1.11节“服务器SQL模式”</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">）。</font>
									<font style="vertical-align: inherit;">例如，
									</font>
								</font><a class="link" href="server-administration.html#sqlmode_error_for_division_by_zero"><code class="literal">ERROR_FOR_DIVISION_BY_ZERO</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										可以影响是否可以将0作为值插入到其分区表达式使用</font>
									<font style="vertical-align: inherit;">或
									</font>
									<font style="vertical-align: inherit;">的表中
									</font>
								</font><code class="literal"><em class="replaceable"><code>column</code></em> DIV
									<em class="replaceable"><code>value</code></em></code>
								<font style="vertical-align: inherit;"></font><code class="literal"><em class="replaceable"><code>column</code></em>
									MOD
									<em class="replaceable"><code>value</code></em>.</code>
							</p>
						</li>
						<li class="listitem">
							<p><b>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">表可访问性。&nbsp;</font>
									</font>
								</b>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										有时，服务器SQL模式的更改可能会使分区表无法使用。</font>
								</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
										TABLE</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">仅当</font>
								</font><a class="link" href="server-administration.html#sqlmode_no_unsigned_subtraction"><code class="literal">NO_UNSIGNED_SUBTRACTION</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										模式</font>
									<font style="vertical-align: inherit;">有效时，才能成功执行</font>
									<font style="vertical-align: inherit;">以下
									</font>
									<font style="vertical-align: inherit;">语句
									</font>
									<font style="vertical-align: inherit;">：
									</font>
								</font>
							</p>
							<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>SELECT @@sql_mode;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">@@ sql_mode |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">|</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------ +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
1排（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font></font><strong class="userinput"><code>CREATE TABLE tu (c1 BIGINT UNSIGNED)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;    </font></font><strong class="userinput"><code>PARTITION BY RANGE(c1 - 10) (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p0 VALUES LESS THAN (-5),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p1 VALUES LESS THAN (0),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p2 VALUES LESS THAN (5),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p3 VALUES LESS THAN (10),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p4 VALUES LESS THAN (MAXVALUE)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font><span class="errortext"><font style="vertical-align: inherit;">ERROR 1563（HY000）：分区常量超出分区函数域</font></span></font><strong class="userinput"><code>);</code></strong>
<span class="errortext"><font style="vertical-align: inherit;"></font></span><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>SET sql_mode='NO_UNSIGNED_SUBTRACTION';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，0行受影响（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>SELECT @@sql_mode;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">@@ sql_mode |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
| </font><font style="vertical-align: inherit;">NO_UNSIGNED_SUBTRACTION |</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
+ ------------------------- +</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
1排（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font></font><strong class="userinput"><code>CREATE TABLE tu (c1 BIGINT UNSIGNED)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;    </font></font><strong class="userinput"><code>PARTITION BY RANGE(c1 - 10) (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p0 VALUES LESS THAN (-5),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p1 VALUES LESS THAN (0),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p2 VALUES LESS THAN (5),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p3 VALUES LESS THAN (10),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p4 VALUES LESS THAN (MAXVALUE)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;</font></font><strong class="userinput"><code>);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.05秒）</font></font><font></font>
</pre>
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										如果</font>
								</font><a class="link" href="server-administration.html#sqlmode_no_unsigned_subtraction"><code class="literal">NO_UNSIGNED_SUBTRACTION</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										在创建后</font>
									<font style="vertical-align: inherit;">删除
									</font>
									<font style="vertical-align: inherit;">服务器SQL模式</font>
								</font><code class="literal">tu</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，则可能无法再访问此表：
									</font>
								</font>
							</p>
							<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>SET sql_mode='';</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，0行受影响（0.00秒）</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font><span class="errortext"><font style="vertical-align: inherit;">ERROR 1563（HY000）：分区常量超出分区函数域</font></span><font style="vertical-align: inherit;"> 
mysql&gt; </font><span class="errortext"><font style="vertical-align: inherit;">ERROR 1563（HY000）：分区常量超出分区函数域</font></span></font><strong class="userinput"><code>SELECT * FROM tu;</code></strong>
<span class="errortext"><font style="vertical-align: inherit;"></font></span><font style="vertical-align: inherit;"></font><strong class="userinput"><code>INSERT INTO tu VALUES (20);</code></strong>
<span class="errortext"><font style="vertical-align: inherit;"></font></span>
</pre>
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										另请参见</font>
								</font><a class="xref" href="server-administration.html#sql-mode" title="5.1.11服务器SQL模式">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第5.1.11节“服务器SQL模式”</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
					</ol>
				</div>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							服务器SQL模式也会影响分区表的复制。</font>
						<font style="vertical-align: inherit;">主服务器和从服务器上的不同SQL模式可能导致分区表达式的计算方式不同; </font>
						<font style="vertical-align: inherit;">这可能导致分区之间的数据分布在给定表的主服务器和从服务器副本中不同，甚至可能导致插入到主服务器上成功的分区表中从服务器上失败。</font>
						<font style="vertical-align: inherit;">为获得最佳结果，应始终在主服务器和从服务器上使用相同的服务器SQL模式。
						</font>
					</font>
				</p>
				<p><b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">性能考虑因素&nbsp;</font>
						</font>
					</b>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							以下列表给出了分区操作对性能的一些影响：
						</font>
					</font>
				</p>
				<div class="itemizedlist">
					<ul class="itemizedlist" style="list-style-type: disc; ">
						<li class="listitem">
							<p><a name="partitioning-limitations-file-system-ops"></a><b>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">文件系统操作。&nbsp;</font>
									</font>
								</b>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										分区和重新分区操作（例如
									</font>
								</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
									 class="literal">ALTER
										TABLE</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">with </font>
								</font><code class="literal">PARTITION BY ...</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，
									</font>
								</font><code class="literal">REORGANIZE PARTITION</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">或</font>
								</font><code class="literal">REMOVE
									PARTITIONING</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">）取决于其实现的文件系统操作。</font>
									<font style="vertical-align: inherit;">这意味着这些操作的速度受诸如文件系统类型和特征，磁盘速度，交换空间，操作系统的文件处理效率以及与服务器处理相关的MySQL服务器选项和变量等因素的影响。</font>
									<font style="vertical-align: inherit;">特别是，您应该确保
									</font>
								</font><a class="link" href="server-administration.html#sysvar_large_files_support"><code class="literal">large_files_support</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">已启用并且
									</font>
								</font><a class="link" href="server-administration.html#sysvar_open_files_limit"><code class="literal">open_files_limit</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">设置正确。</font>
									<font style="vertical-align: inherit;">涉及的分区和重新分区操作</font>
								</font><code class="literal">InnoDB</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">通过启用可以使表更有效
									</font>
								</font><a class="link" href="innodb-storage-engine.html#sysvar_innodb_file_per_table"><code class="literal">innodb_file_per_table</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										另请参见
									</font>
								</font><a class="xref" href="partitioning.html#partitioning-limitations-max-partitions" title="最大分区数">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">最大分区数</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p><b>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">表锁。&nbsp;</font>
									</font>
								</b>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										通常，对表执行分区操作的进程会对表执行写锁定。</font>
									<font style="vertical-align: inherit;">这些表中的读数相对不受影响; </font>
									<font style="vertical-align: inherit;">一旦分区操作完成，就执行</font>
									<font style="vertical-align: inherit;">挂起
									</font>
								</font><a class="link" href="sql-syntax.html#insert" title="13.2.6 INSERT语法"><code class="literal">INSERT</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">和
									</font>
								</font><a class="link" href="sql-syntax.html#update" title="13.2.12 UPDATE语法"><code class="literal">UPDATE</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">操作。</font>
									<font style="vertical-align: inherit;">有关</font>
								</font><code class="literal">InnoDB</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">此限制的特定例外，请参阅
									</font>
								</font><a class="xref" href="innodb-storage-engine.html#online-ddl-partitioning" title="分区操作">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">分区操作</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p><b>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">指标; </font>
										<font style="vertical-align: inherit;">分区修剪。&nbsp;</font>
									</font>
								</b>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										与非分区表一样，正确使用索引可以显着加快对分区表的查询速度。</font>
									<font style="vertical-align: inherit;">此外，在这些表上设计分区表和查询以利用
									</font>
								</font><span class="firstterm">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">分区修剪</font>
									</font>
								</span>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">可以显着提高性能。</font>
									<font style="vertical-align: inherit;">有关</font>
									<font style="vertical-align: inherit;">更多信息</font>
								</font><a class="xref" href="partitioning.html#partitioning-pruning" title="23.4分区修剪">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">，</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">请参见
									</font><a class="xref" href="partitioning.html#partitioning-pruning" title="23.4分区修剪">
										<font style="vertical-align: inherit;">第23.4节“分区修剪”</font>
									</a>
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										分区表支持索引条件下推。</font>
									<font style="vertical-align: inherit;">请参见</font>
								</font><a class="xref" href="optimization.html#index-condition-pushdown-optimization" title="8.2.1.5指数条件下推优化">
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">第8.2.1.5节“索引条件下推优化”</font>
									</font>
								</a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p><b>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">使用LOAD DATA的性能。&nbsp;</font>
									</font>
								</b>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										在MySQL 8.0中，</font>
								</font><a class="link" href="sql-syntax.html#load-data" title="13.2.7 LOAD DATA语法"><code class="literal">LOAD
										DATA</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">使用缓冲来提高性能。</font>
									<font style="vertical-align: inherit;">您应该知道缓冲区每个分区使用130 KB内存来实现此目的。
									</font>
								</font>
							</p>
						</li>
					</ul>
				</div>
				<p><a name="partitioning-limitations-max-partitions"></a><b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">最大分区数。&nbsp;</font>
						</font>
					</b><a class="indexterm" name="idm140091572464288"></a><a class="indexterm" name="idm140091572462784"></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							不使用</font>
					</font><a class="link" href="mysql-cluster.html" title="第22章MySQL NDB Cluster 8.0"><code class="literal">NDB</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">存储引擎</font>
						<font style="vertical-align: inherit;">的给定表的最大可能分区数</font>
						<font style="vertical-align: inherit;">为8192.此数字包括子分区。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							使用</font>
					</font><a class="link" href="mysql-cluster.html" title="第22章MySQL NDB Cluster 8.0"><code class="literal">NDB</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">存储引擎</font>
						<font style="vertical-align: inherit;">的表的最大可能用户定义分区数</font>
						<font style="vertical-align: inherit;">是根据所使用的NDB Cluster软件的版本，数据节点的数量和其他因素确定的。</font>
						<font style="vertical-align: inherit;">有关</font>
						<font style="vertical-align: inherit;">更多信息，</font>
						<font style="vertical-align: inherit;">请参阅
						</font>
					</font><a class="xref" href="mysql-cluster.html#mysql-cluster-nodes-groups-user-partitioning" title="NDB和用户定义的分区">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">NDB和用户定义的分区</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							如果在创建具有大量分区（但小于最大值）的表时，您会遇到</font>
					</font><span class="errortext">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">来自存储引擎</font>
						</font>
					</span>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">的错误消息，例如
						</font><span class="errortext">
							<font style="vertical-align: inherit;">Got error ...：打开文件时资源不足</font>
						</span>
						<font style="vertical-align: inherit;">，您可能能够解决问题通过增加</font>
					</font><a class="link" href="server-administration.html#sysvar_open_files_limit"><code class="literal">open_files_limit</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">系统变量</font>
						<font style="vertical-align: inherit;">的值
						</font>
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">但是，这取决于操作系统，并且可能在所有平台上都不可能或不可取; </font>
						<font style="vertical-align: inherit;">有关更多信息</font>
					</font><a class="xref" href="error-handling.html#not-enough-file-handles" title="B.4.2.17找不到文件和类似错误">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">请参见
						</font><a class="xref" href="error-handling.html#not-enough-file-handles" title="B.4.2.17找不到文件和类似错误">
							<font style="vertical-align: inherit;">第B.4.2.17节“找不到文件和类似错误”</font>
						</a>
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">在某些情况下，由于其他问题，使用大量（数百个）分区也可能不可取，因此使用更多分区不会自动产生更好的结果。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							另请参见
						</font>
					</font><a class="xref" href="partitioning.html#partitioning-limitations-file-system-ops" title="文件系统操作">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">文件系统操作</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p><b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区的InnoDB表不支持外键。&nbsp;</font>
						</font>
					</b><a class="indexterm" name="idm140091572451264"></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							使用</font>
					</font><a class="link" href="innodb-storage-engine.html" title="第15章InnoDB存储引擎"><code class="literal">InnoDB</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							存储引擎的</font>
						<font style="vertical-align: inherit;">分区表</font>
						<font style="vertical-align: inherit;">不支持外键。</font>
						<font style="vertical-align: inherit;">更具体地说，这意味着以下两个陈述是正确的：
						</font>
					</font>
				</p>
				<div class="orderedlist">
					<ol class="orderedlist" type="1">
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;"></font><code class="literal">InnoDB</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">使用用户定义的分区</font>
									<font style="vertical-align: inherit;">
										的</font>
									<font style="vertical-align: inherit;">表的定义可能不包含外键引用; </font>
									<font style="vertical-align: inherit;">没有</font>
								</font><code class="literal">InnoDB</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">可以对其定义包含外键引用的表进行分区。
									</font>
								</font>
							</p>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										没有</font>
								</font><code class="literal">InnoDB</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">表定义可能包含对用户分区表的外键引用; </font>
									<font style="vertical-align: inherit;">没有
									</font>
								</font><code class="literal">InnoDB</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">用户定义分区的表可能包含外键引用的列。
									</font>
								</font>
							</p>
						</li>
					</ol>
				</div>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							刚刚列出的限制范围包括使用</font>
					</font><code class="literal">InnoDB</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">存储引擎的</font>
						<font style="vertical-align: inherit;">所有表</font>
						<font style="vertical-align: inherit;">。
						</font>
					</font><a class="link" href="sql-syntax.html#create-table-foreign-keys" title="13.1.20.6使用FOREIGN KEY约束"><code
						 class="literal">CREATE
							TABLE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">和</font>
					</font><a class="link" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法"><code class="literal">ALTER
							TABLE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							不会导致表违反这些限制的语句。
						</font>
					</font>
				</p>
				<p><b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">ALTER TABLE ... ORDER BY。&nbsp;</font>
						</font>
					</b>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">针对分区表运行</font>
						<font style="vertical-align: inherit;">
							的</font>
						<font style="vertical-align: inherit;">语句仅导致每个分区内的行排序。
						</font>
					</font><code class="literal">ALTER TABLE ... ORDER BY
						<em class="replaceable"><code>column</code></em></code>
					<font style="vertical-align: inherit;"></font>
				</p>
				<p><b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">通过修改主键对REPLACE语句的影响。&nbsp;</font>
						</font>
					</b>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							在某些情况下（参见
						</font>
					</font><a class="xref" href="partitioning.html#partitioning-limitations-partitioning-keys-unique-keys" title="23.6.1对密钥，主密钥和唯一密钥进行分区">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第23.6.1节“分区键，主键和唯一键”</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">）可能需要修改表的主键。</font>
						<font style="vertical-align: inherit;">请注意，如果您的应用程序使用</font>
					</font><a class="link" href="sql-syntax.html#replace" title="13.2.9 REPLACE语法"><code class="literal">REPLACE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							语句而您执行此操作，则这些语句的结果可能会发生巨大变化。</font>
						<font style="vertical-align: inherit;">有关</font>
						<font style="vertical-align: inherit;">更多信息和示例，</font>
						<font style="vertical-align: inherit;">请参见</font>
					</font><a class="xref" href="sql-syntax.html#replace" title="13.2.9 REPLACE语法">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第13.2.9节“REPLACE语法”</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p><b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">FULLTEXT索引。&nbsp;</font>
						</font>
					</b><a class="indexterm" name="idm140091572431168"></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							分区表不支持</font>
					</font><code class="literal">FULLTEXT</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							索引或搜索。
						</font>
					</font>
				</p>
				<p><b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">空间列。&nbsp;</font>
						</font>
					</b>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							具有空间数据类型的列，例如</font>
					</font><code class="literal">POINT</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							或</font>
					</font><code class="literal">GEOMETRY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">不能在分区表中使用。
						</font>
					</font>
				</p>
				<p><b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">临时表。&nbsp;</font>
						</font>
					</b><a class="indexterm" name="idm140091572424976"></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							无法对临时表进行分区。
						</font>
					</font>
				</p>
				<p><b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">记录表。&nbsp;</font>
						</font>
					</b>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							无法对日志表进行分区; </font>
					</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
						 class="literal">ALTER
							TABLE ... PARTITION BY ...</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">这样的表上</font>
						<font style="vertical-align: inherit;">的
						</font>
						<font style="vertical-align: inherit;">语句失败并出现错误。
						</font>
					</font>
				</p>
				<p><b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区键的数据类型。&nbsp;</font>
						</font>
					</b><a class="indexterm" name="idm140091572419616"></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							分区键必须是整数列或解析为整数的表达式。</font>
					</font><a class="link" href="data-types.html#enum" title="11.4.4 ENUM类型"><code class="literal">ENUM</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">不能使用</font>
						<font style="vertical-align: inherit;">使用</font>
						<font style="vertical-align: inherit;">列的</font>
						<font style="vertical-align: inherit;">表达式
						</font>
						<font style="vertical-align: inherit;">。</font>
						<font style="vertical-align: inherit;">列或表达式值也可以是</font>
					</font><code class="literal">NULL</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">; </font>
						<font style="vertical-align: inherit;">请参见</font>
					</font><a class="xref" href="partitioning.html#partitioning-handling-nulls" title="23.2.7 MySQL分区如何处理NULL">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第23.2.7节“MySQL分区如何处理NULL”</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							此限制有两个例外：
						</font>
					</font>
				</p>
				<div class="orderedlist">
					<ol class="orderedlist" type="1">
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										通过[ </font>
								</font><code class="literal">LINEAR</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">]进行
									</font>
									<font style="vertical-align: inherit;">分区时</font>
								</font><code class="literal">KEY</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，可以使用除</font>
									<font style="vertical-align: inherit;">分区键</font>
									<font style="vertical-align: inherit;">之外的任何有效MySQL数据类型的列，
									</font>
								</font><a class="link" href="data-types.html#blob" title="11.4.3 BLOB和TEXT类型"><code class="literal">TEXT</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">或者
									</font>
								</font><a class="link" href="data-types.html#blob" title="11.4.3 BLOB和TEXT类型"><code class="literal">BLOB</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">作为分区键，因为内部键散列函数可以从这些类型生成正确的数据类型。</font>
									<font style="vertical-align: inherit;">例如，以下两个
									</font>
								</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
										TABLE</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">语句有效：
									</font>
								</font>
							</p>
							<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE tkc（c1 CHAR）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
按键分区（c1）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITIONS 4;</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
CREATE TABLE tke</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    （c1 ENUM（'红色'，'橙色'，'黄色'，'绿色'，'蓝色'，'靛蓝'，'紫罗兰'））</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
线性键分区（c1）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
分数6;</font></font><font></font>
</pre>
						</li>
						<li class="listitem">
							<p>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										使用</font>
								</font><code class="literal">RANGE COLUMNS</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">或进行
									</font>
									<font style="vertical-align: inherit;">分区时</font>
								</font><code class="literal">LIST COLUMNS</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，可以使用字符串
									</font>
								</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATE</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，和
									</font>
								</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">DATETIME</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">列。</font>
									<font style="vertical-align: inherit;">例如，以下每个</font>
								</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
										TABLE</code></a>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">语句都有效：
									</font>
								</font>
							</p>
							<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE rc（c1 INT，c2 DATE）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
按栏数划分（c2）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分数p0值低于（'1990-01-01'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p1的价值低于（'1995-01-01'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p2价值低于（'2000-01-01'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p3的价值低于（'2005-01-01'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    分区p4值小于（MAXVALUE）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
CREATE TABLE lc（c1 INT，c2 CHAR（1））</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
列表栏分区（c2）（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p0 VALUES IN（'a'，'d'，'g'，'j'，'m'，'p'，'s'，'v'，'y'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p1 VALUES IN（'b'，'e'，'h'，'k'，'n'，'q'，'t'，'w'，'z'），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PARTITION p2 VALUES IN（'c'，'f'，'i'，'l'，'o'，'r'，'u'，'x'，NULL）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
						</li>
					</ol>
				</div>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							前面的例外都不适用于
						</font>
					</font><a class="link" href="data-types.html#blob" title="11.4.3 BLOB和TEXT类型"><code class="literal">BLOB</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或
						</font>
					</font><a class="link" href="data-types.html#blob" title="11.4.3 BLOB和TEXT类型"><code class="literal">TEXT</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">列类型。
						</font>
					</font>
				</p>
				<p><b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">子查询。&nbsp;</font>
						</font>
					</b><a class="indexterm" name="idm140091572394864"></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							分区键可能不是子查询，即使该子查询解析为整数值或</font>
					</font><code class="literal">NULL</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p><a name="partitioning-limitations-subpartitions"></a><b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">子分区的问题。&nbsp;</font>
						</font>
					</b><a class="indexterm" name="idm140091572390864"></a><a class="indexterm" name="idm140091572389376"></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							子</font>
						<font style="vertical-align: inherit;">分区</font>
						<font style="vertical-align: inherit;">必须使用</font>
					</font><code class="literal">HASH</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">或
						</font>
					</font><code class="literal">KEY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">分区。</font>
						<font style="vertical-align: inherit;">只有
						</font>
					</font><code class="literal">RANGE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">和</font>
					</font><code class="literal">LIST</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">分区可能是分区的; </font>
					</font><code class="literal">HASH</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">和
						</font>
					</font><code class="literal">KEY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">分区不能分区。
						</font>
					</font>
				</p>
				<p>
					<a class="indexterm" name="idm140091572382736"></a>

					<code class="literal">SUBPARTITION BY KEY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">要求明确指定子分区列，不同于</font>
					</font><code class="literal">PARTITION BY KEY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">可以省略的情况（在这种情况下，默认情况下使用表的主键列）。</font>
						<font style="vertical-align: inherit;">考虑一下这个语句创建的表：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">创建表ts（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NOT AUTO_INCREMENT PRIMARY KEY，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    名称VARCHAR（30）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							您可以创建一个具有相同列的表</font>
					</font><code class="literal">KEY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，使用如下所示的语句进行</font>
						<font style="vertical-align: inherit;">分区
						</font>
						<font style="vertical-align: inherit;">：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">创建表ts（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NOT AUTO_INCREMENT PRIMARY KEY，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    名称VARCHAR（30）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITION BY KEY（）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITIONS 4;</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							前面的语句被视为已经像这样编写，表的主键列用作分区列：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">创建表ts（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    id INT NOT NOT AUTO_INCREMENT PRIMARY KEY，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    名称VARCHAR（30）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITION BY KEY（id）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITIONS 4;</font></font><font></font>
        </pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							但是，以下语句尝试使用默认列作为子分区列创建子分区表失败，并且必须为该语句指定该列才能成功，如下所示：
						</font>
					</font>
				</p>
				<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">MySQL的&gt; </font></font><strong class="userinput"><code>CREATE TABLE ts (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;"> 
    - &gt;      </font></font><strong class="userinput"><code>id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>name VARCHAR(30)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>PARTITION BY RANGE(id)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>SUBPARTITION BY KEY()</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>SUBPARTITIONS 4</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>(</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p0 VALUES LESS THAN (100),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p1 VALUES LESS THAN (MAXVALUE)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font><span class="errortext"><font style="vertical-align: inherit;">ERROR 1064（42000）：SQL语法错误; </font></span><span class="errortext"><font style="vertical-align: inherit;">检查手册</font></span></font><strong class="userinput"><code>);</code></strong>
<span class="errortext"><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
对应于您的MySQL服务器版本，以便在'）附近使用正确的语法</font></font></span><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font></font><strong class="userinput"><code>CREATE TABLE ts (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>name VARCHAR(30)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>PARTITION BY RANGE(id)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>SUBPARTITION BY KEY(id)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>SUBPARTITIONS 4</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>(</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p0 VALUES LESS THAN (100),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p1 VALUES LESS THAN (MAXVALUE)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;</font></font><strong class="userinput"><code>);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，0行受影响（0.07秒）</font></font><font></font>
</pre>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							这是一个已知问题（参见Bug＃51470）。
						</font>
					</font>
				</p>
				<p><b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">DATA DIRECTORY和INDEX DIRECTORY选项。&nbsp;</font>
						</font>
					</b>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">忽略</font>
						<font style="vertical-align: inherit;">
							表级</font>
					</font><code class="literal">DATA DIRECTORY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">和</font>
					</font><code class="literal">INDEX
						DIRECTORY</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">选项（请参阅Bug＃32091）。</font>
						<font style="vertical-align: inherit;">您可以将这些选项用于</font>
					</font><a class="link" href="innodb-storage-engine.html" title="第15章InnoDB存储引擎"><code class="literal">InnoDB</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">表的</font>
						<font style="vertical-align: inherit;">各个分区或子分区</font>
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p><b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">修复和重建分区表。&nbsp;</font>
						</font>
					</b>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							该声明</font>
					</font><a class="link" href="sql-syntax.html#check-table" title="13.7.3.2检查表语法"><code class="literal">CHECK TABLE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，
						</font>
					</font><a class="link" href="sql-syntax.html#optimize-table" title="13.7.3.4 OPTIMIZE TABLE语法"><code class="literal">OPTIMIZE
							TABLE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，
						</font>
					</font><a class="link" href="sql-syntax.html#analyze-table" title="13.7.3.1 ANALYZE TABLE语法"><code class="literal">ANALYZE
							TABLE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，并
						</font>
					</font><a class="link" href="sql-syntax.html#repair-table" title="13.7.3.5 REPAIR TABLE语法"><code class="literal">REPAIR
							TABLE</code></a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">支持分区表。
						</font>
					</font>
				</p>
				<p>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">
							此外，您可以使用</font>
					</font><code class="literal">ALTER TABLE ... REBUILD
						PARTITION</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">重建分区表的一个或多个分区; </font>
					</font><code class="literal">ALTER TABLE ... REORGANIZE
						PARTITION</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">还会导致重建分区。</font>
						<font style="vertical-align: inherit;">有关这两个语句的更多信息</font>
					</font><a class="xref" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">请参见
						</font><a class="xref" href="sql-syntax.html#alter-table" title="13.1.9 ALTER TABLE语法">
							<font style="vertical-align: inherit;">第13.1.9节“ALTER TABLE语法”</font>
						</a>
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<p>
					<code class="literal">ANALYZE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，</font>
					</font><code class="literal">CHECK</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，
						</font>
					</font><code class="literal">OPTIMIZE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，</font>
					</font><code class="literal">REPAIR</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">，和
						</font>
					</font><code class="literal">TRUNCATE</code>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">操作与子分区支持。</font>
						<font style="vertical-align: inherit;">请参见
						</font>
					</font><a class="xref" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作">
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">第13.1.9.1节“ALTER TABLE分区操作”</font>
						</font>
					</a>
					<font style="vertical-align: inherit;">
						<font style="vertical-align: inherit;">。
						</font>
					</font>
				</p>
				<div class="section">

					<div class="titlepage">
						<div>
							<div>
								<h3 class="title"><a name="partitioning-limitations-partitioning-keys-unique-keys"></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.6.1对密钥，主密钥和唯一密钥进行分区</font>
									</font>
								</h3>
							</div>
						</div>
					</div>
					<a class="indexterm" name="idm140091572337280"></a><a class="indexterm" name="idm140091572336240"></a><a class="indexterm"
					 name="idm140091572334752"></a><a class="indexterm" name="idm140091572333664"></a><a class="indexterm" name="idm140091572332176"></a>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								本节讨论将密钥与主键和唯一键分区的关系。</font>
							<font style="vertical-align: inherit;">管理此关系的规则可以表示如下：分区表的分区表达式中使用的所有列必须是表可能具有的每个唯一键的一部分。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								换句话说，</font>
						</font><span class="emphasis"><em>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">表上的每个唯一键必须使用表的分区表达式中的每一列</font>
								</font>
							</em></span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">（这也包括表的主键，因为它根据定义是一个唯一键。这个特殊情况将在本节后面讨论。）例如，以下每个表创建语句都是无效的：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE t1（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col1 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col2 DATE NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col3 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col4 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    独特的钥匙（col1，col2）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
哈希分区（col3）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITIONS 4;</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
创建表t2（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col1 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col2 DATE NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col3 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col4 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    独特的钥匙（col1），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    独特的钥匙（col3）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
哈希分区（col1 + col3）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITIONS 4;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								在每种情况下，建议的表将至少有一个唯一键，不包括分区表达式中使用的所有列。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								以下每个语句都是有效的，并且表示可以使相应的无效表创建语句起作用的一种方式：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">CREATE TABLE t1（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col1 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col2 DATE NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col3 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col4 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    独特的钥匙（col1，col2，col3）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
哈希分区（col3）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITIONS 4;</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
创建表t2（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col1 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col2 DATE NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col3 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col4 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    独特的钥匙（col1，col3）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
哈希分区（col1 + col3）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITIONS 4;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								此示例显示在这种情况下产生的错误：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>CREATE TABLE t3 (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>col1 INT NOT NULL,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>col2 DATE NOT NULL,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>col3 INT NOT NULL,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>col4 INT NOT NULL,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>UNIQUE KEY (col1, col2),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>UNIQUE KEY (col3)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>PARTITION BY HASH(col1 + col3)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font><span class="errortext"><font style="vertical-align: inherit;">ERROR 1491（HY000）：PRIMARY KEY必须包含表格分区功能中的所有列</font></span></font><strong class="userinput"><code>PARTITIONS 4;</code></strong>
<span class="errortext"><font style="vertical-align: inherit;"></font></span>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								该</font>
						</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句失败，因为两者</font>
						</font><code class="literal">col1</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">并</font>
						</font><code class="literal">col3</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								包含在建议分区键，但是没有这些列既是餐桌上唯一键的一部分。</font>
							<font style="vertical-align: inherit;">这显示了无效表定义的一种可能修复：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>CREATE TABLE t3 (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>col1 INT NOT NULL,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>col2 DATE NOT NULL,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>col3 INT NOT NULL,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>col4 INT NOT NULL,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>UNIQUE KEY (col1, col2, col3),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>UNIQUE KEY (col3)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font></font><strong class="userinput"><code>PARTITION BY HASH(col3)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;</font></font><strong class="userinput"><code>PARTITIONS 4;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.05秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								在这种情况下，建议的分区键
							</font>
						</font><code class="literal">col3</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">是两个唯一键的一部分，表创建语句成功。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								根本无法对下表进行分区，因为无法在分区键中包含属于这两个唯一键的任何列：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">创建表t4（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col1 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col2 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col3 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col4 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    UNIQUE KEY（col1，col3），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    独特的钥匙（col2，col4）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								由于每个主键根据定义是唯一键，因此该限制还包括表的主键（如果有）。</font>
							<font style="vertical-align: inherit;">例如，接下来的两个语句无效：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">创建表t5（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col1 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col2 DATE NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col3 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col4 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    主键（col1，col2）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
哈希分区（col3）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITIONS 4;</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
创建表t6（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col1 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col2 DATE NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col3 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col4 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PRIMARY KEY（col1，col3），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    独特的钥匙（col2）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
HASH分区（年份（col2））</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITIONS 4;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								在这两种情况下，主键都不包括分区表达式中引用的所有列。</font>
							<font style="vertical-align: inherit;">但是，接下来的两个语句都是有效的：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">创建表t7（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col1 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col2 DATE NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col3 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col4 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    主键（col1，col2）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
哈希分区（col1 + YEAR（col2））</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITIONS 4;</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
CREATE TABLE t8（</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col1 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col2 DATE NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col3 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    col4 INT NOT NULL，</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    PRIMARY KEY（col1，col2，col4），</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    独特的钥匙（col2，col1）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
哈希分区（col1 + YEAR（col2））</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
PARTITIONS 4;</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								如果表没有唯一键 - 这包括没有主键 - 则此限制不适用，并且只要列类型与分区类型兼容，您就可以使用分区表达式中的任何列。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								出于同样的原因，除非密钥包含表的分区表达式使用的所有列，否则以后不能向分区表添加唯一键。</font>
							<font style="vertical-align: inherit;">考虑如下所示创建的分区表：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>CREATE TABLE t_no_pk (c1 INT, c2 INT)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION BY RANGE(c1) (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;          </font></font><strong class="userinput"><code>PARTITION p0 VALUES LESS THAN (10),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;          </font></font><strong class="userinput"><code>PARTITION p1 VALUES LESS THAN (20),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;          </font></font><strong class="userinput"><code>PARTITION p2 VALUES LESS THAN (30),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;          </font></font><strong class="userinput"><code>PARTITION p3 VALUES LESS THAN (40)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，0行受影响（0.12秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								可以</font>
						</font><code class="literal">t_no_pk</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">使用以下任一
							</font>
						</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
							 class="literal">ALTER
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句</font>
							<font style="vertical-align: inherit;">添加主键
							</font>
							<font style="vertical-align: inherit;">：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">＃可能的PK</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>ALTER TABLE t_no_pk ADD PRIMARY KEY(c1);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.13秒）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
记录：0重复：0警告：0</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
＃放弃这个PK</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>ALTER TABLE t_no_pk DROP PRIMARY KEY;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，0行受影响（0.10秒）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
记录：0重复：0警告：0</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
＃使用另一种可能的PK</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>ALTER TABLE t_no_pk ADD PRIMARY KEY(c1, c2);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，0行受影响（0.12秒）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
记录：0重复：0警告：0</font></font><font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
＃放弃这个PK</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
MySQL的&gt; </font></font><strong class="userinput"><code>ALTER TABLE t_no_pk DROP PRIMARY KEY;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，0行受影响（0.09秒）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
记录：0重复：0警告：0</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								但是，下一个语句失败，因为它</font>
						</font><code class="literal">c1</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								是分区键的一部分，但不是建议的主键的一部分：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">＃失败，错误1503</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
mysql&gt; </font><span class="errortext"><font style="vertical-align: inherit;">ERROR 1503（HY000）：PRIMARY KEY必须包含表格分区功能中的所有列</font></span></font><strong class="userinput"><code>ALTER TABLE t_no_pk ADD PRIMARY KEY(c2);</code></strong>
<span class="errortext"><font style="vertical-align: inherit;"></font></span>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								由于</font>
						</font><code class="literal">t_no_pk</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">仅</font>
						</font><code class="literal">c1</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								在其分区表达式中，尝试</font>
						</font><code class="literal">c2</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">单独</font>
							<font style="vertical-align: inherit;">添加唯一键</font>
							<font style="vertical-align: inherit;">失败。</font>
							<font style="vertical-align: inherit;">但是，您可以添加使用</font>
						</font><code class="literal">c1</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">和
							</font>
							<font style="vertical-align: inherit;">的唯一键</font>
						</font><code class="literal">c2</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								这些规则也适用于您希望使用分区的现有非分区表
							</font>
						</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
							 class="literal">ALTER
								TABLE ... PARTITION BY</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">考虑</font>
						</font><code class="literal">np_pk</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">如下所示创建</font>
							<font style="vertical-align: inherit;">的表
							</font>
							<font style="vertical-align: inherit;">：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>CREATE TABLE np_pk (</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>id INT NOT NULL AUTO_INCREMENT,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>name VARCHAR(50),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>added DATE,</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PRIMARY KEY (id)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;</font></font><strong class="userinput"><code>);</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询正常，0行受影响（0.08秒）</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								以下
							</font>
						</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
							 class="literal">ALTER
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句失败并显示错误，因为该
							</font>
						</font><code class="literal">added</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">列不是表中任何唯一键的一部分：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>ALTER TABLE np_pk</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION BY HASH( TO_DAYS(added) )</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font><span class="errortext"><font style="vertical-align: inherit;">ERROR 1503（HY000）：PRIMARY KEY必须包含表的分区函数中的所有列</font></span></font><strong class="userinput"><code>PARTITIONS 4;</code></strong>
<span class="errortext"><font style="vertical-align: inherit;"></font></span>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								但是，使用</font>
						</font><code class="literal">id</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">分区列</font>
							<font style="vertical-align: inherit;">的</font>
							<font style="vertical-align: inherit;">列的</font>
							<font style="vertical-align: inherit;">此语句</font>
							<font style="vertical-align: inherit;">是有效的，如下所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>ALTER TABLE np_pk</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION BY HASH(id)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;     </font></font><strong class="userinput"><code>PARTITIONS 4;</code></strong><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
查询OK，0行受影响（0.11秒）</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
记录：0重复：0警告：0</font></font><font></font>
</pre>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								在这种情况下</font>
						</font><code class="literal">np_pk</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，唯一可以用作分区表达式一部分的列是
							</font>
						</font><code class="literal">id</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">; </font>
							<font style="vertical-align: inherit;">如果您希望使用分区表达式中的任何其他列对此表进行分区，则必须先修改表，方法是将所需的一列或多列添加到主键，或者完全删除主键。
							</font>
						</font>
					</p>
				</div>
				<div class="section">
					<div class="titlepage">
						<div>
							<div>
								<h3 class="title"><a name="partitioning-limitations-storage-engines"></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.6.2与存储引擎相关的分区限制</font>
									</font>
								</h3>

							</div>

						</div>

					</div>
					<a class="indexterm" name="idm140091572253872"></a>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								在MySQL 8.0中，MySQL服务器实际上并不提供分区支持，而是由表存储引擎自己的或本机分区处理程序提供。</font>
							<font style="vertical-align: inherit;">在MySQL 8.0中，只有</font>
						</font><a class="link" href="innodb-storage-engine.html" title="第15章InnoDB存储引擎"><code class="literal">InnoDB</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								存储引擎提供本机分区处理程序。</font>
							<font style="vertical-align: inherit;">这意味着无法使用任何其他存储引擎创建分区表。
							</font>
						</font>
					</p>
					<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">

						<div class="admon-title">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									注意
								</font>
							</font>
						</div>
						<p>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">
									MySQL Cluster的</font>
							</font><code class="literal">NDB</code>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">存储引擎还提供本机分区支持，但MySQL 8.0目前不支持。
								</font>
							</font>
						</p>
					</div>
					<p>
						<a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
							 class="literal">ALTER
								TABLE ... OPTIMIZE PARTITION</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">无法正常使用的分区表</font>
						</font><code class="literal">InnoDB</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">使用
							</font>
						</font><code class="literal">ALTER TABLE ... REBUILD PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">和
							</font>
						</font><code class="literal">ALTER TABLE ... ANALYZE PARTITION</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，相反，这样的表。</font>
							<font style="vertical-align: inherit;">有关更多信息，请参见
							</font>
						</font><a class="xref" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第13.1.9.1节“ALTER TABLE分区操作”</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p><a name="partitioning-limitations-ndb"></a><b>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">用户定义的分区和NDB存储引擎（NDB集群）。&nbsp;</font>
							</font>
						</b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								分区</font>
						</font><code class="literal">KEY</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">（包括
							</font>
						</font><code class="literal">LINEAR KEY</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">）是</font>
						</font><a class="link" href="mysql-cluster.html" title="第22章MySQL NDB Cluster 8.0"><code class="literal">NDB</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">存储引擎</font>
							<font style="vertical-align: inherit;">支持的唯一分区类型
							</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">在正常情况下，NDB群集中不可能使用除[ </font>
						</font><code class="literal">LINEAR</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">] </font>
							<font style="vertical-align: inherit;">之外的任何分区类型创建NDB群集表</font>
						</font><code class="literal">KEY</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，并且尝试这样做会失败并显示错误。
							</font>
						</font>
					</p>
					<p>
						<span class="emphasis"><em>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">异常（不用于生产）</font>
								</font>
							</em></span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">：可以通过</font>
						</font><a class="link" href="server-administration.html#sysvar_new"><code class="literal">new</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">在NDB Cluster SQL节点上</font>
							<font style="vertical-align: inherit;">设置</font>
							<font style="vertical-align: inherit;">系统变量</font>
							<font style="vertical-align: inherit;">来覆盖此限制
							</font>
						</font><code class="literal">ON</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">如果您选择这样做，您应该知道</font>
						</font><code class="literal">[LINEAR] KEY</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">在生产中不支持</font>
							<font style="vertical-align: inherit;">使用分区类型以外的表</font>
							<font style="vertical-align: inherit;">。</font>
						</font><span class="emphasis"><em>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">在这种情况下，您可以创建和使用除</font>
								</font><code class="literal">KEY</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">
										or </font>
									<font style="vertical-align: inherit;">之外的分区类型的表</font>
								</font><code class="literal">LINEAR KEY</code>
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">，但是完全由您自己承担风险</font>
								</font>
							</em></span>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								可以为</font>
						</font><a class="link" href="mysql-cluster.html" title="第22章MySQL NDB Cluster 8.0"><code class="literal">NDB</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">表</font>
							<font style="vertical-align: inherit;">定义的最大分区数
							</font>
							<font style="vertical-align: inherit;">取决于群集中的数据节点和节点组的数量，正在使用的NDB群集软件的版本以及其他因素。</font>
							<font style="vertical-align: inherit;">有关</font>
							<font style="vertical-align: inherit;">更多信息，</font>
							<font style="vertical-align: inherit;">请参阅
							</font>
						</font><a class="xref" href="mysql-cluster.html#mysql-cluster-nodes-groups-user-partitioning" title="NDB和用户定义的分区">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">NDB和用户定义的分区</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;"></font><code class="literal">NDB</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">表中</font>
							<font style="vertical-align: inherit;">
								每个分区可存储的最大固定大小数据量</font>
							<font style="vertical-align: inherit;">为128 TB。</font>
							<font style="vertical-align: inherit;">以前，这是16 GB。
							</font>
						</font>
					</p>
					<p>
						<a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">和
							</font>
						</font><a class="link" href="sql-syntax.html#alter-table-partition-operations" title="13.1.9.1 ALTER TABLE分区操作"><code
							 class="literal">ALTER
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">不会导致用户分区</font>
						</font><a class="link" href="mysql-cluster.html" title="第22章MySQL NDB Cluster 8.0"><code class="literal">NDB</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">表不满足以下两个要求之一或两者的</font>
							<font style="vertical-align: inherit;">语句
							</font>
							<font style="vertical-align: inherit;">，并且失败并显示错误：
							</font>
						</font>
					</p>
					<div class="orderedlist">
						<ol class="orderedlist" type="1">
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											该表必须具有显式主键。
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">
											表的分区表达式中列出的所有列都必须是主键的一部分。
										</font>
									</font>
								</p>
							</li>
						</ol>
					</div>
					<p><b>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">例外。&nbsp;</font>
							</font>
						</b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								如果</font>
						</font><a class="link" href="mysql-cluster.html" title="第22章MySQL NDB Cluster 8.0"><code class="literal">NDB</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">使用空列列表（即使用</font>
						</font><code class="literal">PARTITION BY KEY()</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">或</font>
						</font><code class="literal">PARTITION BY
							LINEAR KEY()</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">）</font>
							<font style="vertical-align: inherit;">创建</font>
							<font style="vertical-align: inherit;">用户分区</font>
							<font style="vertical-align: inherit;">表
							</font>
							<font style="vertical-align: inherit;">，则不需要显式主键。
							</font>
						</font>
					</p>
					<p><b>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">升级分区表。&nbsp;</font>
							</font>
						</b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								执行升级时，</font>
						</font><code class="literal">KEY</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">必须转储并重新加载</font>
							<font style="vertical-align: inherit;">分区的表
							</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">使用</font>
						</font><code class="literal">InnoDB</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">非MySQL </font>
							<font style="vertical-align: inherit;">存储引擎的分区表
							</font>
							<font style="vertical-align: inherit;">无法从MySQL 5.7或更早版本升级到MySQL 8.0或更高版本; </font>
							<font style="vertical-align: inherit;">您必须从这些表中删除分区，</font>
						</font><code class="literal">ALTER TABLE ...
							REMOVE PARTITIONING</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">或者</font>
							<font style="vertical-align: inherit;">在升级之前</font>
							<font style="vertical-align: inherit;">将它们转换为
							</font>
						</font><code class="literal">InnoDB</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">使用</font>
						</font><code class="literal">ALTER TABLE ...
							ENGINE=INNODB</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								有关将</font>
						</font><code class="literal">MyISAM</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								表</font>
							<font style="vertical-align: inherit;">转换为的信息</font>
						</font><code class="literal">InnoDB</code>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，请参见
							</font>
						</font><a class="xref" href="innodb-storage-engine.html#converting-tables-to-innodb" title="15.6.1.3将表从MyISAM转换为InnoDB">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第15.6.1.3节“将表从MyISAM转换为InnoDB”</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
				</div>
				<div class="section">
					<div class="titlepage">
						<div>
							<div>
								<h3 class="title"><a name="partitioning-limitations-functions"></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">23.6.3与函数相关的分区限制</font>
									</font>
								</h3>

							</div>

						</div>

					</div>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								本节讨论MySQL分区中的限制，特别是与分区表达式中使用的函数有关。
							</font>
						</font>
					</p><a class="indexterm" name="idm140091572207264"></a>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								在分区表达式中只允许使用以下列表中显示的MySQL函数：
							</font>
						</font>
					</p>
					<div class="itemizedlist">
						<ul class="itemizedlist" style="list-style-type: disc; ">
							<li class="listitem">
								<p>
									<a class="link" href="functions.html#function_abs"><code class="literal">ABS()</code></a>
								</p>
							</li>
							<li class="listitem">
								<p>
									<a class="link" href="functions.html#function_ceiling"><code class="literal">CEILING()</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">（见
										</font>
									</font><a class="xref" href="partitioning.html#partitioning-limitations-ceiling-floor" title="CEILING（）和FLOOR（）">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">CEILING（）和FLOOR（）</font>
										</font>
									</a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">）
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<a class="link" href="functions.html#function_datediff"><code class="literal">DATEDIFF()</code></a>
								</p>
							</li>
							<li class="listitem">
								<p>
									<a class="link" href="functions.html#function_day"><code class="literal">DAY()</code></a>
								</p>
							</li>
							<li class="listitem">
								<p>
									<a class="link" href="functions.html#function_dayofmonth"><code class="literal">DAYOFMONTH()</code></a>
								</p>
							</li>
							<li class="listitem">
								<p>
									<a class="link" href="functions.html#function_dayofweek"><code class="literal">DAYOFWEEK()</code></a>
								</p>
							</li>
							<li class="listitem">
								<p>
									<a class="link" href="functions.html#function_dayofyear"><code class="literal">DAYOFYEAR()</code></a>
								</p>
							</li>
							<li class="listitem">
								<p>
									<a class="link" href="functions.html#function_extract"><code class="literal">EXTRACT()</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">（参见
										</font>
									</font><a class="xref" href="partitioning.html#partitioning-limitations-extract" title="带有WEEK说明符的EXTRACT（）函数">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">带有WEEK说明符的EXTRACT（）函数</font>
										</font>
									</a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">）
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<a class="link" href="functions.html#function_floor"><code class="literal">FLOOR()</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">（见
										</font>
									</font><a class="xref" href="partitioning.html#partitioning-limitations-ceiling-floor" title="CEILING（）和FLOOR（）">
										<font style="vertical-align: inherit;">
											<font style="vertical-align: inherit;">CEILING（）和FLOOR（）</font>
										</font>
									</a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">）
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<a class="link" href="functions.html#function_hour"><code class="literal">HOUR()</code></a>
								</p>
							</li>
							<li class="listitem">
								<p>
									<a class="link" href="functions.html#function_microsecond"><code class="literal">MICROSECOND()</code></a>
								</p>
							</li>
							<li class="listitem">
								<p>
									<a class="link" href="functions.html#function_minute"><code class="literal">MINUTE()</code></a>
								</p>
							</li>
							<li class="listitem">
								<p>
									<a class="link" href="functions.html#function_mod"><code class="literal">MOD()</code></a>
								</p>
							</li>
							<li class="listitem">
								<p>
									<a class="link" href="functions.html#function_month"><code class="literal">MONTH()</code></a>
								</p>
							</li>
							<li class="listitem">
								<p>
									<a class="link" href="functions.html#function_quarter"><code class="literal">QUARTER()</code></a>
								</p>
							</li>
							<li class="listitem">
								<p>
									<a class="link" href="functions.html#function_second"><code class="literal">SECOND()</code></a>
								</p>
							</li>
							<li class="listitem">
								<p>
									<a class="link" href="functions.html#function_time-to-sec"><code class="literal">TIME_TO_SEC()</code></a>
								</p>
							</li>
							<li class="listitem">
								<p>
									<a class="link" href="functions.html#function_to-days"><code class="literal">TO_DAYS()</code></a>
								</p>
							</li>
							<li class="listitem">
								<p>
									<a class="link" href="functions.html#function_to-seconds"><code class="literal">TO_SECONDS()</code></a>
								</p>
							</li>
							<li class="listitem">
								<p>
									<a class="link" href="functions.html#function_unix-timestamp"><code class="literal">UNIX_TIMESTAMP()</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">（带
										</font>
									</font><a class="link" href="data-types.html#datetime" title="11.3.1 DATE，DATETIME和TIMESTAMP类型"><code class="literal">TIMESTAMP</code></a>
									<font style="vertical-align: inherit;">
										<font style="vertical-align: inherit;">列）
										</font>
									</font>
								</p>
							</li>
							<li class="listitem">
								<p>
									<a class="link" href="functions.html#function_weekday"><code class="literal">WEEKDAY()</code></a>
								</p>
							</li>
							<li class="listitem">
								<p>
									<a class="link" href="functions.html#function_year"><code class="literal">YEAR()</code></a>
								</p>
							</li>
							<li class="listitem">
								<p>
									<a class="link" href="functions.html#function_yearweek"><code class="literal">YEARWEEK()</code></a>
								</p>
							</li>
						</ul>
					</div>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								在MySQL 8.0，分区修剪被支撑为</font>
						</font><a class="link" href="functions.html#function_to-days"><code class="literal">TO_DAYS()</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，
							</font>
						</font><a class="link" href="functions.html#function_to-seconds"><code class="literal">TO_SECONDS()</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，
							</font>
						</font><a class="link" href="functions.html#function_year"><code class="literal">YEAR()</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">，和
							</font>
						</font><a class="link" href="functions.html#function_unix-timestamp"><code class="literal">UNIX_TIMESTAMP()</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">功能。</font>
							<font style="vertical-align: inherit;">有关</font>
							<font style="vertical-align: inherit;">更多信息</font>
						</font><a class="xref" href="partitioning.html#partitioning-pruning" title="23.4分区修剪">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">请参见
							</font><a class="xref" href="partitioning.html#partitioning-pruning" title="23.4分区修剪">
								<font style="vertical-align: inherit;">第23.4节“分区修剪”</font>
							</a>
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
					<p><a name="partitioning-limitations-ceiling-floor"></a><b>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">CEILING（）和FLOOR（）。&nbsp;</font>
							</font>
						</b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								这些函数中的每一个只有在传递精确数字类型的参数（例如其中一个</font>
						</font><a class="link" href="data-types.html#integer-types" title="11.2.1整数类型（精确值） -  INTEGER，INT，SMALLINT，TINYINT，MEDIUMINT，BIGINT"><code
							 class="literal">INT</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">或类型）
							</font>
							<font style="vertical-align: inherit;">时才返回整数</font>
						</font><a class="link" href="data-types.html#fixed-point-types" title="11.2.2定点类型（精确值） -  DECIMAL，NUMERIC"><code
							 class="literal">DECIMAL</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">这意味着，例如，以下</font>
						</font><a class="link" href="sql-syntax.html#create-table" title="13.1.20 CREATE TABLE语法"><code class="literal">CREATE
								TABLE</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">语句失败并显示错误，如下所示：
							</font>
						</font>
					</p>
					<pre data-lang="sql" class="programlisting"><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">mysql&gt; </font></font><strong class="userinput"><code>CREATE TABLE t (c FLOAT) PARTITION BY LIST( FLOOR(c) )(</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p0 VALUES IN (1,3,5),</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt;      </font></font><strong class="userinput"><code>PARTITION p1 VALUES IN (2,4,6)</code></strong><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
    - &gt; </font><span class="errortext"><font style="vertical-align: inherit;">ERROR 1490（HY000）：PARTITION函数返回错误的类型</font></span></font><strong class="userinput"><code>);</code></strong>
<span class="errortext"><font style="vertical-align: inherit;"></font></span>
</pre>
					<p><a name="partitioning-limitations-extract"></a><b>
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">带有WEEK说明符的EXTRACT（）函数。&nbsp;</font>
							</font>
						</b>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								函数返回的值
							</font>
						</font><a class="link" href="functions.html#function_extract"><code class="literal">EXTRACT()</code></a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">用作时</font>
							<font style="vertical-align: inherit;">，取决于</font>
							<font style="vertical-align: inherit;">系统变量</font>
							<font style="vertical-align: inherit;">的值
							</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">因此，</font>
							<font style="vertical-align: inherit;">在将单位指定</font>
							<font style="vertical-align: inherit;">为时，
							</font>
							<font style="vertical-align: inherit;">不允许作为分区功能
							</font>
							<font style="vertical-align: inherit;">。</font>
							<font style="vertical-align: inherit;">（Bug＃54483）
							</font>
						</font><a class="link" href="functions.html#function_extract"><code class="literal">EXTRACT(WEEK FROM
								<em class="replaceable"><code>col</code></em>)</code></a>
						<font style="vertical-align: inherit;"></font><a class="link" href="server-administration.html#sysvar_default_week_format"><code
							 class="literal">default_week_format</code></a>
						<font style="vertical-align: inherit;"></font><a class="link" href="functions.html#function_extract"><code class="literal">EXTRACT()</code></a>
						<font style="vertical-align: inherit;"></font><code class="literal">WEEK</code>
						<font style="vertical-align: inherit;"></font>
					</p>
					<p>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">
								有关</font>
							<font style="vertical-align: inherit;">这些函数的返回类型的更多信息</font>
						</font><a class="xref" href="functions.html#mathematical-functions" title="12.6.2数学函数">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">，</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">请参见</font><a class="xref" href="functions.html#mathematical-functions"
							 title="12.6.2数学函数">
								<font style="vertical-align: inherit;">第12.6.2节“数学函数”</font>
							</a>
							<font style="vertical-align: inherit;">，以及</font>
						</font><a class="xref" href="data-types.html#numeric-types" title="11.2数字类型">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第11.2节“数值类型”</font>
							</font>
						</a>
						<font style="vertical-align: inherit;">
							<font style="vertical-align: inherit;">。
							</font>
						</font>
					</p>
				</div>

			</div>

		</div>
		<div class="copyright-footer">

		</div>
		<div class="navfooter">
			<hr>
			<table width="100%" summary="Navigation footer">
				<tbody>
					<tr>
						<td width="40%" align="left"><a accesskey="p" href="mysql-cluster.html">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">上一页</font>
								</font>
							</a></td>
						<td width="20%" align="center"><a accesskey="u" href="">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">向上</font>
								</font>
							</a></td>
						<td width="40%" align="right">&nbsp;<a accesskey="n" href="stored-objects.html">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">下一个</font>
								</font>
							</a></td>
					</tr>
					<tr>
						<td width="40%" align="left" valign="top">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第22章MySQL NDB Cluster 8.0</font>
							</font>
						</td>
						<td width="20%" align="center"><a accesskey="h" href="index.html">
								<font style="vertical-align: inherit;">
									<font style="vertical-align: inherit;">家</font>
								</font>
							</a></td>
						<td width="40%" align="right" valign="top">
							<font style="vertical-align: inherit;">
								<font style="vertical-align: inherit;">第24章存储的对象</font>
							</font>
						</td>
					</tr>
				</tbody>
			</table>
		</div>


		<div id="goog-gt-tt" class="skiptranslate" dir="ltr">
			<div style="padding: 8px;">
				<div>
					<div class="logo"><img src="https://www.gstatic.com/images/branding/product/1x/translate_24dp.png" width="20"
						 height="20" alt="Google 翻译"></div>
				</div>
			</div>
			<div class="top" style="padding: 8px; float: left; width: 100%;">
				<h1 class="title gray">原文</h1>
			</div>
			<div class="middle" style="padding: 8px;">
				<div class="original-text"></div>
			</div>
			<div class="bottom" style="padding: 8px;">
				<div class="activity-links"><span class="activity-link">提供更好的翻译建议</span><span class="activity-link"></span></div>
				<div class="started-activity-container">
					<hr style="color: #CCC; background-color: #CCC; height: 1px; border: none;">
					<div class="activity-root"></div>
				</div>
			</div>
			<div class="status-message" style="display: none;"></div>
		</div>
		<div id="cntvlive2-is-installed"></div>
		<div class="goog-te-spinner-pos">
			<div class="goog-te-spinner-animation"><svg xmlns="http://www.w3.org/2000/svg" class="goog-te-spinner" width="96px"
				 height="96px" viewBox="0 0 66 66">
					<circle class="goog-te-spinner-path" fill="none" stroke-width="6" stroke-linecap="round" cx="33" cy="33" r="30"></circle>
				</svg></div>
		</div>
	</body>
</html>
